CommonJS
同步加载
exports
//a.js
let name=“铁牛”
module.exports.name = name;
/**
* exports == module.exports
* exports = name; => 错误
*
**/
module.exports = name; //表示默认导出name
require
读入并执行一个js文件,返回该模块返回的exports对象
加载会有缓存,重复引用会使用缓存
require是被导出值的拷贝,模块内部值的变化不会影响导出的值(修改实在导出之后)
AMD
异步加载
require([module], callback);
依赖前置、提前执行
<script src="js/require.js" data-main="js/main"></script>
//入口文件是js目录下main,js
//定义AMD的模块
//math.js
define(function(){
var add = function(a,b){
return a + b;
}
return {
add: add
}
})
//如果math还以来其他模块
define([‘mylib’],function(mylib){
//…其他代码
})
//入口main.js
require.config({
baseUrl: ‘js/lib’,
paths: {
‘math’: ‘math’,
‘jQuery’: ‘jQuery.min’
}
})
require([‘math’], function(math){
console.log(math.add(1,2));
})
CMD
依赖就近、延迟执行