我目前正在开发一个基于backbone.js 的大型网络应用程序,并且在组织、“僵尸”等方面遇到了很多问题,因此我决定对代码进行重大重构。我已经编写了一堆辅助函数来处理“僵尸”;但是,我想从头开始,为代码创建一个很好的结构/组织。我还没有找到很多关于大型backbone.js组织的优秀教程/示例,所以我有点从头开始,想看看我是否能得到一些关于我开始的地方的意见。
显然我已经在全局命名空间中设置了我的代码;但我也想保持该名称空间相当干净。我的主 app.js 将类文件本身与全局命名空间分开;您可以使用 reg() 函数注册一个类(以便可以实例化它),并且 inst() 函数从类数组中实例化一个类。因此,除了这 3 个方法之外,MyApp 命名空间只有 Router、Model 和 View:
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);
在模型、集合、路由器和视图中,我像往常一样工作,但随后需要在文件末尾注册该类,以便稍后可以通过以下方式实例化它(不会扰乱命名空间):
MyApp.reg('Models', 'App', Model);
这看起来是一种不必要的代码组织方式吗?其他人是否有更好的示例来说明如何组织具有许多路由器、集合、模型和视图的大型项目?