Disposition et gestion de la vue

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/2012/01/02/reducing-backbone-routers-to-nothing-more-than-configuration/

http://lostechies.com/derickbailey/2011/12/27/the-responsibilities-of-the-various-pieces-of-backbone-js/

http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/

http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

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.