我正在启动一个新项目,回顾我的最佳实践以尽可能避免出现任何问题,并查看我已经形成的不良习惯。
我对使用模块/子模块模式处理JavaScript初始化序列的方法并不是很满意。
假设我的代码最终变成了这样:
FOO.init()
FOO.module1.init()
FOO.module2.init()
FOO.module3.init()
FOO.module4.init()
在全局范围内。
本质上我正在执行以下操作(为了简洁起见省略了错误检查和细节):
var FOO = (function (me) {
me.init = function () {
for (var i in me.inits) {
me.inits[i]();
}
}
return me;
}(FOO || {}));
var FOO = (function (parent) {
var me = parent.module1 = parent.module1 || {};
me.init = function () {
}
parent.inits.push(me.init);
return parent;
}(FOO || {}));
$(document).ready(FOO.init);
用于初始化。
我知道以前读过这方面的内容,但现在无法想出正确的搜索词来找到相关文章。有没有经过深思熟虑和测试的模式可以处理这种情况下的初始化问题呢?
谢谢。
编辑:重新阅读后,我觉得一些背景信息可能有助于回答这个问题。
在我的情况下,每个模块/子模块都在自己的文件中。基础模块定义了站点的基本功能,子模块启用不同的功能。例如,一个子模块可以在搜索框上连接自动完成功能,另一个子模块可以将静态头部图像变成旋转横幅。子模块通过CMS启用/禁用,因此我真的希望摆脱在基础模块内部进行显式调用的方法,以便所有内容都可以由CMS管理。我也知道有特定于CMS的方法可以完成这个任务,但我正在寻找一个通用的JavaScript模式,以提供在使用不同CMS的项目之间的一致性和可重用性。