¿Cómo cambiar las vistas con el enrutador backbone.js?

Esta es más una pregunta conceptual, en términos de uso del enrutador backbone y representación de vistas en el backbone.

Por el bien de un ejemplo (lo que estoy construyendo para aprender esto) Tengo una aplicación CRUD básica para contactos, con formulario de creación, una lista de todos los contactos, una vista única de contacto y un formulario de edición.

Por simplicidad, voy a decir que solo me gustaría ver una de estas cosas a la vez. Obviamente, mostrarlos y ocultarlos con jQuery sería trivial, pero eso no es lo que busco.

Tengo dos ideas

1) desencadenar eventos personalizados desde mi enrutador que eliminan todas las vistas y envían eventos que podrían escucharse en todas las vistas (desencadenando un método de cierre) y una vista principal de la aplicación que luego crea una vista específica, es decir:

App.Router = Backbone.Router.extend({
    routes: {
        '' : 'index',
        'addnew' : 'addNew',
        'contacts/:id' : 'singleContact',
        'contacts/:id/edit' : 'editContact'
    },

    index: function(){

        vent.trigger('contactR:closeAll');
        vent.trigger('contactR:index');
    },

    addNew: function() {

        vent.trigger('contactR:closeAll');
        vent.trigger('contactR:addNew');
    },

    singleContact: function(id) {

        vent.trigger('contactR:closeAll');
        vent.trigger('contactR:singleContact', id);
    },

    editContact: function(id) {

        vent.trigger('contactR:closeAll');
        vent.trigger('contactR:editContact', id);
    },

});

(nb: vent está extendiendo el backbone events obj para que pueda pub / sub)

2) ¿o debería / podría / debería enviar un evento de cierre completo y crear una instancia de la vista en el enrutador?

Tenga en cuenta que estoy buscando lograr esto sin profundizar en bibliotecas o marcos adicionales como marionetas, etc.

Respuestas a la pregunta(1)

Su respuesta a la pregunta