我正在开发一个包含不同JavaScript文件的Web应用程序,具体取决于我在应用程序中的位置。例如,我为每个页面都有一个display.js,每个页面都有一个“init()”函数,只要加载页面就会调用它。
这适用于webapp,但在我的QUnit测试中,所有脚本文件都包含在单个index.html中,相同名称的函数会相互覆盖。
如何最好地处理这些问题?每页一个测试index.html文件会创建许多样板代码,并使执行所有测试用例变得非常简单。这就是为什么我决定区别地命名每一个功能,例如“initFrontPage()”而不是“init()”。然而,这使得应用程序代码有点奇怪:我不仅要包含正确的文件,还必须在其中调用正确的函数。还有更好的方法吗?
答案 0 :(得分:0)
解决方案是使用名称空间:
在foo / display.js中:
window.foo = {};
foo.init = function () { ... };
在bar / display.js中:
window.bar = {};
bar.init = function () { ... };
然后,在使用bar / display.js的init
方法的页面中:
(function (display) {
display.init();
}(bar));
将display.js代码包装在IIFE中也是一个好主意。