Amd,Cmd, Commonjs, ES6 import/export的异同点
Amd,Cmd, Commonjs, ES6 import/export等均是模块化方案
1、Commonjs使用在Nodejs上,加载模块是同步的。
2、Amd是requirejs在推广过程中对模块定义的规范化产出,异步模块定义,requirejs是对这个概念的实现,好比JavaScript语言是对ECMAScript规范的实现。
3、Cmd是seajs在推广过程中对模块定义的规范化产出,是一个同步模块定义,seajs是cmd概念的一个实现,seajs是淘宝团队提供的一个模块开发的js框架。
4、ES6 引进import/export进行模块化
CMD和AMD的区别:
1.对于依赖的模块AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行(根据写法不同,处理方式不通过)。
2.CMD推崇依赖就近,AMD推崇依赖前置。
//AMD
define(['./c','./d'], function (c, d) {
//依赖一开始就写好
c.test();
d.test();
});
//CMD
define(function (requie, exports, module) {
//依赖可以就近书写
var a = require('./c');
c.test();
...
//软依赖
if (status) {
var d = requie('./d');
d.test();
}
});
3.AMD的api默认是一个当多个用,CMD严格的区分推崇职责单一。
例如:AMD里require分全局的和局部的。CMD里面没有全局的 require,提供 seajs.use()来实现模块系统的加载启动。CMD里每个API都简单纯粹。