js模块方案

在浏览器环境中,模块的各个部分通常都是从网上获取的,有时无法知道js哪个模块会先加载,所以传入的返回函数除了返回函数本身,还可以返回为空对象。

自执行函数的处理方式:

var module1 = (function (mod) {
console.log('module1 inset');
return mod;
})(window.module1 || {});

独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。

为了在模块内部调用全局变量,必须显式地将其他变量输入模块。

  var module1 = (function ($, YAHOO) {

    //...

  })(jQuery, YAHOO);

上面的module1模块需要使用jQuery库和YUI库,就把这两个库(其实是两个模块)当作参数输入module1。这样做除了保证模块的独立性,还使得模块之间的依赖关系变得明显。

参阅CommonJS(适用于node.js)和AMD规范(适用于浏览器,但基于CommonJS),规范地使用模块。

到目前为止,javascript (ES5及以前) 还不能支持原生的模块化,大多数的解决方案都是通过引用外部的库来实现模块化。遵循CMD规范的 Seajs 和AMD的 RequireJS

上一篇:python 使用多线程进行并发编程/互斥锁的使用


下一篇:深入理解JavaScript系列(48):对象创建模式(下篇)