我有兴趣使用模块模式更好地组织我未来的项目。不幸的是,模块模式只有几个简短的教程和概念验证示例。

使用模块模式,我想将项目组织到这种结构中:

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.requiredojo.provide.

人们更喜欢这样做有很多细微差别,但是您所谓的模块模式(命名范围)的主要好处是,您不会弄乱全球名称空间,这有助于保持事物的清洁状态。引入其他图书馆等,并避免姓名碰撞。

您如何组织名称和嵌套范围在很大程度上是个人喜好的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top