我对如何继续我的项目感到困惑。 我正在开发一个企业应用程序,其中要编写许多模块。 大多数模块将使用大量的jQuery插件来创建复杂的网格,为不同的目的绘制图形,这意味着模块将向DOM添加div,表等等。
我想保留名称空间,因为这将是一个大型应用程序。 为此,我遇到了原型方法和自动执行匿名函数。 似乎建议使用自动执行的匿名函数。
我的问题是
我的项目范围:
请帮助我理解我的项目范围中的这个自我执行的东西,这是我的项目持有一个主命名空间说“Myapp”,其模块如Myapp.moduleA,Myapp.moduleB.MyApp将触发其模块点击等。 什么是最适合我的方式?
自我执行匿名功能
(function( skillet, $, undefined ) {
//Private Property
var isHot = true;
//Public Property
skillet.somevar = "Bacon Strips";
//Public Method
skillet.draw = function() {
//Draw a grid
};
//Private Method
function _grid( ) {
//
}
}
}( window.skillet = window.skillet || {}, jQuery ));
答案 0 :(得分:2)
你不能重复使用自执行功能,它只是立即执行,就是这样。
如果你需要多次执行它,你应该只声明一个函数。
可能的方法是:
var MYNAMESPACE.Object = (function(){
// private methods
var somemethod = function(){};
// public methods
return {
somepublicmethod: function(){}
};
})();
现在你可以这样称呼它:
MYNAMESPACE.Object.somepublicmethod();
至于启动时执行。如果您只创建方法并且不在声明中立即执行任何操作,除非您拥有非常多的模块,否则它不会对性能产生太大影响。如果是这种情况,您应该查看异步模块加载器模式(AMD)。 RequireJS就是一个很好的例子:http://requirejs.org
我写了一篇关于JS命名空间的文章,对你来说很有意思:
http://www.kenneth-truyers.net/2013/04/27/javascript-namespaces-and-modules/