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都简单纯粹。