Je commence par Backbone et je souhaite implémenter une application simple afin de gérer les utilisateurs et les objets produits. La disposition de la page est toujours la même: l'en-tête (page supérieure), le menu (colonne de gauche) et le contenu (colonne de droite), mais le contenu de l'en-tête et du menu dépend du module actuel (utilisateur ou produit).
Je recherche la manière appropriée de gérer ma mise en page. En fait, je gère l'en-tête et le menu dans chaque méthode de mon Backbone.Router mais je pense que ce n'est pas la meilleure solution.
var appRouter = Backbone.Router.extend({ routes: { "users": "listUser", "users/new": "newUser", "users/:id": "showUser", "products": "listProduct", "products/new": "newProduct", "products/:id": "showProduct" }, listUser: function() { if (this.userHeaderView == null) { var header= new UserHeaderView(); header.render(); this.userHeaderView = header; } if (this.userMenuView == null) { var menu= new UserMenuView (); menu.render(); this.userMenuView = menu; } this.contentView = new UserListView().render(); } // ... newProduct: function() { if (this.productHeaderView == null) { var header= new ProductHeaderView(); header.render(); this.productHeaderView = header; } if (this.productMenuView == null) { var menu= new ProductMenuView(); menu.render(); this.productMenuView = menu; } this.contentView = new NewProductView().render(); } // ... });
Un routeur ne doit pas être utilisé pour gérer l'initialisation de l'application. Vous devriez créer un objet d'application qui gère le processus d'initialisation, configurer les en-têtes et les menus dont vous avez toujours besoin, etc. (Notez que Backbone n'inclut pas un objet comme celui-ci. C'est à vous de créer cet objet).
Le routeur doit seulement savoir ce qu'il doit absolument savoir, afin de ramener l'application à l'état demandé.
J'ai écrit quelques articles à ce sujet, et même si mes articles font référence à mon squelette Backbone.Marionette, les principes de ce que je dis s'appliquent également à l'utilisation de Backbone standard:
http://lostechies.com/derickbailey/2012/02/06/3-stages-of-a-backbone-applications-startup/
http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/
http://lostechies.com/derickbailey/2011/08/30/dont-limit-your-backbone-apps-to-backbone-constructs/
Je me rends compte que je suggère de lire beaucoup plus d'informations que probablement nécessaire pour répondre directement à votre question. La combinaison de ces articles devrait toutefois vous informer d'un certain nombre d'idées et de points de vue différents qui aideront à façonner votre utilisation de Backbone afin que vous puissiez éviter certaines des erreurs courantes concernant les routeurs, la gestion de la mise en page, la fermeture des vues, etc.