如何在模块中拆分我的库?

时间:2015-08-20 12:52:31

标签: javascript gruntjs closures

我正在编写一个日复一日的JS库太大而无法维护,因此我想将其拆分为“模块”,然后使用Grunt处理它们以生成单个JS文件。

当涉及私人和公共职能时,我很难理解事情是如何运作的。这是关于我的库如何构建的一个非常基本的例子:

(function () {
    'use strict';

    var MyLib = window.MyLib = {};

    var MyEnum = {
        ONE: 1,
        TWO: 2
    };

    MyLib.login = function() { doUserLogin(); };

    function doUserLogin () {
        // ...
        showPopup("ok!");
    }

    function showPopup (msg) {
        alert(msg);
    }
})();

这样:

    使用MyLib 从外面可以看到
  • MyLib.<whatever>
  • MyEnum只能 此库
  • login()可以从外部调用MyLib.login()。此功能在内部调用私有方法doUserLogin()
  • 从外部,用户必须才能致电doUserLogin()showPopup()

我认为我可以使用MyLib对象的声明创建一个主JS,像login()这样的公共方法和MyEnum这样的局部常量,加上两个模块(名称空间?)/users/popups

  • users.js包含doUserLogin()
  • 的定义
  • popups.js包含与弹出窗口创建相关的所有内容

在这种情况下,先前的模式必须仍然有效。因此,doUserLogin()可以调用showPopup(),但无法从库外部调用

您能否展示如何拆分它的基本示例?

0 个答案:

没有答案