题
我有兴趣使用模块模式更好地组织我未来的项目。不幸的是,模块模式只有几个简短的教程和概念验证示例。
使用模块模式,我想将项目组织到这种结构中:
project.arm.object.method();
其中“项目”是我的全局项目名称,“ ARM”是项目的一个小节或分支,“对象”是单个对象,依此类推。
但是,我不确定我应该如何宣布和组织“ project”下的多个“武器”和“对象”。
var project = window.project || {};
project.arm = project.arm || {};
project.arm.object = (function() {
var privateVar = "Private contents.";
function privateMethod() {
alert(privateVar);
}
return {
method: privateMethod
};
}());
定义复杂的模块结构时,是否有任何最佳实践或约定?我应该只是在最后一个下方声明一个新的手臂/物体吗?
解决方案
其他提示
道场的 dojo.declare
对这种事情很棒,因为它
使用紧凑型表示法创建构造函数,以进行继承和原型扩展。
即使只是去除这种锅炉板,也确实很方便:
var project = window.project || {};
project.arm = project.arm || {};
如果您只需要该功能,那么您可以使用 dojo.setObject
, ,但是,当然,写一些事情要做的事情是微不足道的。
dojo.setObject("project.arm.object" (function() {
var privateVar = "Private contents.";
function privateMethod() {
alert(privateVar);
}
return {
method: privateMethod
};
}()));
我最近用过 dojo.declare
/dojo.setObject
对于一个大型JavaScript项目(86个文件,7k+行(不计数评论和空白行)),这是一个轻而易举的事情,可以使所有内容保持井井有条,易于管理,尤其是当您拥有像包含在内的机制时 dojo.require
和 dojo.provide
.
人们更喜欢这样做有很多细微差别,但是您所谓的模块模式(命名范围)的主要好处是,您不会弄乱全球名称空间,这有助于保持事物的清洁状态。引入其他图书馆等,并避免姓名碰撞。
您如何组织名称和嵌套范围在很大程度上是个人喜好的问题。
不隶属于 StackOverflow