什么是AMD模块系统和CMD模块系统
- AMD 是 RequireJS 在推广过程中对模块定义的规范化产出
- CMD是SeaJS在推广过程中对模块化定义的规范化产出
上述两种规范是服务于JavaScript的模块化开发,目前两种都能实现浏览器端的模块化开发的目的,不同之处是CMD是懒执行,AMD是预执行
他们的区别是
- 对于依赖的模块,AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成了可以延迟执行(根据写法不同,执行的方式不同)
- CMD推崇就近依赖,AMD推崇依赖前置。看代码
//CMD的方式
define(function(require,exprots,module){
var a = require('./a');
a.dosmting();
//省略1W行
var b = require('./b');
b.dosmting();
})
//AMD的方式
define(['./a','./b'],function(a,b){
a.dosmting();
//省略1W行
b.dosmting();
})
以上AMD的写法是官方推崇的方式,但是同时也支持CMD的写法
- AMD支持全局require、局部require,但是CMD不支持全局require,所以CMD没有全局API而AMD有
其他不同之处补充:Sea.js与Require.js的异同