JS模块化
CMD
依赖就近,延迟执行
define(function(require, exports, module) { var $ = require('jquery');
var Spinning = require('./spinning');
exports.doSomething = ...
module.exports = ...
})AMD
1. 异步执行,,它要在声明模块的时候指定所有的依赖dependencies,并且还要当做形参传 到factory中,对于依赖的模块提前执行,依赖前置
2. AMD采用:require([module], callback);
例如:
定义:
// math.js
define(function (){
var add = function (x,y){
return x+y;
};
return {
add: add
};
});
使用:
require(['math'], function (math) {
math.add(2, 3);
});
CommonJS
1. 服务器端使用 2. 同步
3. 浏览器不兼容的原因:缺少四个NODE变量
module
exports
require
global,入股提供着四个变量,可以使用模块。
var module = {
exports: {}
};
(function(module, exports) {
exports.multiply = function (n) { return n * 1000 };
}(module, module.exports))
var f = module.exports.multiply;
f(5) // 5000
4. 使用
// moduleA.js
module.exports = function( value ){
return value * 2;
}
// moduleB.js
var multiplyBy2 = require('./moduleA');
var result = multiplyBy2(4);