我正在编写一个日复一日的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()
,但无法从库外部调用。
您能否展示如何拆分它的基本示例?