将模块模式javascript代码分割成文件

时间:2013-08-05 15:58:36

标签: javascript module split

我正在使用模块模式编写一个javascript框架,如下所示:

var EF = (function(doc) {

    // Main public object
    var e = {
        version: "1.0.0",
        doc: doc,
        log: true
    };

    // Private methods

    var method1 = function(el) {
        <some code>
    }

    var method2 = function(el) {
        <some code>
    }

    var method3 = function(el) {
        <some code>
    }


    // PUBLIC METHODS ASSIGNMENT

    e.method1 = method1;
    e.method2 = method2;
    e.method3 = method3;

    return e;

}(document));

现在我决定将一些方法移到单独的文件中。 在开发过程中,我会在HTML文件中逐个加载两个文件,而对于部署,我会将它们合并到一个文件中。

将方法的一部分移动到保存我使用的代码结构的单独文件的正确方法是什么?

我在stackoverflow的一个答案中看到了以下建议:

var MODULE = (function (my) {
    var privateToThisFile = "something";

    // add capabilities...

    my.publicProperty = "something";

    return my;
}(MODULE || {}));

它看起来几乎就像我需要的那样,但它显示了文件和模块的私有方法。但我需要模块的私有方法和模块的公共方法。

你有什么建议?

1 个答案:

答案 0 :(得分:1)

我不确定你想要什么,但我想你想通过模块对象访问私有函数。从本质上讲,它是指向私有财产的公共指针。

如果我能帮助您,请进一步了解。使用jsFiddle的一个问题示例很棒。

var myRevealingModule = function () {

    var privateCounter = 0;

    function privateFunction() {
        privateCounter++;
    }

    function publicFunction() {
        publicIncrement();
    }

    function publicIncrement() {
        privateFunction();
    }

    function publicGetCount(){
      return privateCounter;
    }

    // Reveal public pointers to 
    // private functions and properties        

   return {
        start: publicFunction,
        increment: publicIncrement,
        count: publicGetCount
    };

}();

myRevealingModule.start();