【发布时间】:2011-12-21 14:47:11
【问题描述】:
我目前正在开发一个基于backbone.js 的大型网络应用程序,并且在组织、“僵尸”等方面遇到了很多问题,因此我决定对代码进行重大重构。我已经写了一堆处理“僵尸”的辅助函数;但是,我想从一开始就为代码创建一个很好的结构/组织。我没有找到很多关于大型骨干网.js 组织的优秀教程/示例,所以我有点从头开始,想看看我是否可以就我从哪里开始获得一些意见。
我显然已经在全局命名空间中设置了我的代码;但我也想保持该命名空间相当干净。我的主 app.js 将类文件本身与全局命名空间分开;您可以使用 reg() 函数注册一个类(以便实例化),而 inst() 函数从 classes 数组中实例化一个类。因此,MyApp 命名空间除了这 3 个方法外,只有 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);
这似乎是一种不必要的代码组织方式吗?其他人是否有更好的示例来说明如何组织具有许多路由器、集合、模型和视图的大型项目?
【问题讨论】:
-
也许codereview.stackexchange.com 更适合这类问题 - 但请随时更新(发布链接);)
-
您可以在不同的模块中组织您的代码。可以查看github.com/juggy/backbone-module小号自推:p
标签: javascript jquery namespaces backbone.js organization