Je suis actuellement en train de travailler sur une grande application web construit sur backbone.js et y a eu beaucoup de problèmes d'organisation, de "zombies", etc. j'ai donc décidé de faire un grand refactorisation de code. J'ai déjà écrit un tas de fonctions d'assistance pour les relations avec les "zombies"; cependant, je voudrais commencer dès le début et de créer une belle structure/organisation du code. Je n'ai pas trouvé beaucoup de didacticiels et des exemples sur la grande échelle backbone.js organisation donc je avons commencé à partir de zéro et voudrais voir si je peux obtenir quelques avis sur où j'ai commencé.
Je n'ai évidemment mis en place mon code au sein d'un espace de noms global; mais j'aimerais aussi garder de l'espace de nom plutôt propre. Mon principal app.js conserve les fichiers de classe eux-mêmes séparés de l'espace de noms global; vous pouvez vous inscrire à une classe (de sorte qu'il peut être instancié) à l'aide de la reg() et la fonction de l'inst() instancie une classe de classes de tableau. Ainsi, outre les 3 méthodes, la MyApp espace de noms a seulement Routeur, de Modèle et de Vue:
var MyApp = (function () {
var classes = {
Routers: {},
Collections: {},
Models: {},
Views: {}
};
methods = {
init: function () {
MyApp.Router = MyApp.inst('Routers', 'App');
MyApp.Model = MyApp.inst('Models', 'App');
MyApp.View = MyApp.inst('Views', 'App');
Backbone.history.start();
},
reg: function (type, name, C) {
classes[type][name] = C;
},
inst: function (type, C, attrs) {
return new classes[type][C](attrs || {});
}
};
return methods;
}());
$(MyApp.init);
Dans les Modèles, des Collections, des Routeurs et des points de Vue, je travail comme d'habitude, mais alors besoin de s'inscrire que de la classe à la fin du fichier de sorte qu'il pourrait être instancié à un moment plus tard (sans encombrer l'espace de noms) avec:
MyApp.reg('Models', 'App', Model);
Cela vous semble comme un inutile façon d'organiser le code? D'autres ont de meilleurs exemples de la façon d'organiser de très gros projets avec de nombreux Routeurs, des Collections, des Modèles et des points de Vue?