我正在启动一个新项目,并且正在审查我的最佳实践以尝试防止出现任何问题,并且查看我已经使用了哪些不良习惯。Javascript模块模式和子模块初始化模式
我对使用模块/子模块模式在Javascript中处理初始化序列的方式并不满意。
比方说,我的代码最终与全球范围内类似
FOO.init()
FOO.module1.init()
FOO.module2.init()
FOO.module3.init()
FOO.module4.init()
。
我基本上做的(错误检查和细节omittied为了简洁):
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的项目之间的一致性和可重复性。
谢谢。我的真实代码更接近你的第二个例子,这让我对我的方法感觉更好。你的例子也给了我一些改进的想法。 – mpdonadio 2011-02-23 01:15:22