Backbone tiene un 'enrutador' (que es básicamente lo que he llegado a conocer como controlador). Puedes usarlo para hacer navegación. Por ejemplo:
var MyApp = new Backbone.Router();
MyApp.navigate('newPage', {trigger: true});
trigger se asegura de que se produzca un evento en caso de que esté utilizando dichos eventos.
Puede agrupar el enrutador con el 'historial' de Backbone y crear una aplicación de una página bastante impresionante muy fácilmente.
Editar: No importa, acabo de volver a leer que no quería utilizar una ruta. Mis dos centavos: haz una envoltura para hacer la navegación por ti. Tuve que refactorizar una aplicación de JavaScript bastante grande hace unas semanas, sacando un centenar de ubicaciones de ventana para poder probarlas en una unidad. No es tan divertido. Es decir:
MyApp = {
navigate: function (url) { window.location = url; }
}
Ahora usted puede hacer las pruebas unitarias, como se puede anular MyApp.navigate con algo que no hace nada cuando se le llama. También puede agregar lógica de negocios si es necesario ... o filtros ... o cualquier otra cosa ... sin necesidad de molestar al resto de la aplicación. Por ejemplo, si la url está fuera del sitio, ábralo en una nueva ventana en lugar de simplemente mostrar en la misma página.