我目前正在构建一个基于backbone.js的大型web应用程序,并且在组织,“僵尸”等方面遇到很多问题,所以我决定做一个主要的代码重构。我已经写了一些帮助函数来处理“僵尸”;不过,我想从头开始,并为代码创建一个很好的结构/组织。我还没有找到关于大规模backbone.js组织的很多很棒的教程/例子,所以我从头开始着手,希望看看我能否从我开始的地方得到一些意见。Large backbone.js web应用程序组织
我明显在全局命名空间中设置了我的代码;但我也想保持这个名称空间相当干净。我的主要app.js保持类文件本身与全局名称空间分开;你可以使用reg()函数注册一个类(以便它可以被实例化),而inst()函数实例化类数组中的一个类。因此,除了3种方法中,MyApp的命名空间只有路由器,模型和视图:
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);
中的Models,集合,路由器和意见,我像往常一样工作,但随后需要在年底来注册类因此,它可以在以后被实例化的文件(而不会弄乱命名空间)与:
MyApp.reg('Models', 'App', Model);
这是否看起来像组织代码不必要的方法吗?其他人是否有更好的例子来说明如何用许多路由器,集合,模型和视图组织真正的大型项目?
也许http://codereview.stackexchange.com更适合这样的问题 - 但使我们更新(后链接);) – sled
可以在不同的模块中的组织代码。您可以查看https://github.com/juggy/backbone-module小型自我推销:p – Julien