文章目录
Javascript模块化编程的目的是通过加载已有的功能模块,开发者只需实现核心的业务逻辑,方便代码的复用和维护。
AMD
实现JavaScript模块化编程有两种方法:CommonJS和AMD。
node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。以下是CommonJS加载模块和调用模块的方法
var math = require('math');
math.add(2,3); // 5
但由于CommonJS是同步执行,必须等模块加载完才能执行下一步,在浏览器环境中,由于模块在服务器端,如果网速差会导致浏览器处于假死状态,因此浏览器的模块必须采用异步加载,也就是AMD(Asynchronous Module Definition)。
AMD采用异步方式加载模块,模块的加载不影响它后面语句的运行。模块加载和调用也是用require,其中第二个参数是回调函数,所有依赖这个模块的语句,都定义在这个回调函数中,等到加载完成之后,这个回调函数才会运行。
require(['math'], function (math) {
math.add(2, 3);
});
require.js的用法
AMD依赖的模块要用define定义。
// math.js
define(['myLib'], function(myLib){
function foo(){
myLib.doSomething();
}
return {
foo : foo
};
});
然后在另一个文件中用require调用这个模块
// main.js
require(['math'], function (math){
alert(math.foo());
});