45 votes

Routeurs multiples vs routeur unique dans BackboneJs

Tous exemple sur la dorsale à l'aide d'un routeur pour l'ensemble de l'application. Mais ne serait-il pas logique d'avoir un routeur pour une seule partie de votre application (en-tête, pied de page, l'étape, la barre latérale). Donc ma question est est-ce que quiconque de créer des applications avec plus d'un routeur et ce sont l'expérience.

Permet de réfléchir à un complexe d'application avec des vues imbriquées. Ne serait-il pas mieux quand une vue ont leur propre routeur qui gèrent l'affichage des sous-vues, que d'avoir un gros routeur qui ont pour informer la vue principale pour changer son point de vue?

Le fond de cette question: je viens de voir beaucoup de parallèles, le routeur de la colonne vertébrale et le ActivityMapper dans GWT. Le ActivityMapper est seul responsable d'obtenir le droit de presenter pour un parcours donné et un conteneur dans les DOM.

23voto

Sander Points 7078

j'ai écrit une application (encore écrit) avec plusieurs routeurs en elle. cependant, il n'est pas comme vous le pensez, c'est plus du module de base et non un routeur par vue ou quelque chose comme ça.

par exemple, dire que j'ai deux gros modules dans mon application, 1 de la manipulation de tous les livres, et 1 pour les utilisateurs. les livres ont de multiples points de vue (comme le font les utilisateurs), une vue de liste, l'affichage des détails, modifier la vue, etc etc... ainsi, chaque module dispose de son propre routeur, ce qui est synonyme de son propre ensemble d'url:

// user module...
var userRouter = Backbone.Router.extend({
    routes: {
        "users": "loadUsers",
        "users/add": "addUser",
        "user/:id": "loadUser",
        "user/:id/edit": "editUser"
    }

// ... rest dropped to save the trees (you never know if someone prints this out)
});


// book module
var bookRouter = Backbone.Router.extend({
    routes: {
        "books": "loadBooks",
        "books/add": "addBook",
        "book/:name": "loadBook",
        "book/:name/edit": "editBook"
    }

// ... rest dropped to save the trees (you never know if someone prints this out)
});

donc, ce n'est pas comme mes deux routeurs sont en concurrence pour le même trajet, ils ont chacun de gérer leurs propres itinéraires.

modifier maintenant que j'ai eu plus d'infos via Elf Sternberg, je sais qu'il n'est pas possible par défaut de disposer de plusieurs routeurs match sur le même itinéraire. sans une solution de contournement comme primordial l'épine dorsale de l'histoire ou de l'utilisation des espaces de noms dans les itinéraires et les regexes pour correspondre à ces routes. plus d'infos ici: plusieurs itinéraires correspondants merci Elf Sternberg pour le lien.

22voto

geek_dave Points 1524

Je viens d'écrire un article sur les sous-routes spécifiques au module dans Backbone, qui permet de définir une "subroute" prenant en compte tout ce qui suit le préfixe de cette route.

Consultez l'entrée du blog pour plus d'explications: http://www.geekdave.com/?p=13

Cela signifie que vous n'avez pas à redéfinir le même préfixe de manière redondante, et que vous pouvez également charger les sous-routes paresseux au fur et à mesure de l'accès aux modules. Les commentaires sont les bienvenus!

2voto

Pallavi Anderson Points 304

Il est limité mais important quand il est logique d'utiliser plusieurs Routeurs. Si vous avez besoin d'exposer qu'un sous-ensemble de votre application itinéraires et des vues basées sur les données recueillies au moment de l'exécution (peut-être des informations d'identification de connexion - par exemple, le gestionnaire de vs le personnel peut voir et naviguer entre les différents ensembles de points de vue) vous pouvez instancier seul le Routeur et les classes d'Affichage. Ceci est important car les routes peuvent être mis en signet et envoyé à partir d'un utilisateur à l'autre. Bien sûr, vous avez encore besoin de vérifications sur le serveur pour vous assurer qu'un utilisateur non autorisé n'est pas l'émission de demandes navigue à vue, ils arrivèrent à via un signet envoyé par un utilisateur autorisé. Mais il est préférable de conception de l'application, de sorte que la non autorisée vue est tout simplement pas généré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X