jQuery命名空间声明和模块化方法
jQuery namespace declaration and modular approach
我对如何继续我的项目感到困惑。我正在开发一个企业应用程序,其中需要编写许多模块。大多数模块将使用大量的jQuery插件来创建复杂的网格,绘制用于不同目的的图形,这意味着模块将在DOM中添加大量的div、表等。
我想保留命名空间,因为这将是一个大型应用程序。为此,我遇到了原型方法和自执行匿名函数。自我执行的匿名函数似乎被推荐了很多。
我的问题是
- 自执行功能是否可重复使用?我的意思是,这些都会立即执行,所以假设一个模块为给定的JSON文件绘制一个复杂的网格。所以,我能像jQuery插件一样,对3个不同的JSON文件使用相同的自执行匿名函数吗
- 当有很多模块被编写时,它们都会在启动时自动执行。它会影响内存/处理器的使用吗?这难道不是应该在需要的时候调用模块的方式吗?自我执行有什么意义
我的项目范围:
请帮助我理解我的项目范围中的这个自动执行的东西,这就是我的项目。我的项目拥有一个主命名空间,比如"Myapp",以及它的模块,比如Myapp.moduleA、Myapp.mmodule B。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 ));
您不能重用自执行函数,它只是立即执行,仅此而已。
如果您需要多次执行它,您应该只声明一个函数。
一种可能的方法是:
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/
相关文章:
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- 使用Ampersand.js路由模块化应用程序
- 性能与模块化:将JS集成到PHP或单独的custom.JS中
- 将broccoliJS与当前使用requireJS的模块化主干应用程序结合使用,我想完全放弃requireJS
- 用于多个选项卡和模块化的knockoutjs设计模式
- 编写在浏览器和node.js中运行的模块化ECMAScript
- Javascript库对象方法声明
- 模块化&重用使用ExtJS编写的代码
- 使用模块化CSS与Bootstrap 4和React
- 构建模块化谷歌地图应用程序
- 将变量传递给 Javascript 模块化模式方法
- jQuery命名空间声明和模块化方法
- JavaScript 模块化方法中 IIFE 和非 IIFE 之间的区别
- 如何在 JavaScript 中定义类方法以确保模块化和性能
- 模块化node.js/socket的最佳方法.io /表达应用程序
- 使用模块化方法构建JavaScript应用程序
- 模块化模式方法的问题
- 向现有模块化模式对象添加新方法
- 使用jQuery添加一个基于浏览器滚动位置的CSS类——寻找一种更模块化的方法
- Javascript模块化设计模式——哪个更好:自调用函数,还是对象文字方法