1,AMD/CMD/CommonJs都是JS模块化开发的标准,目前对应的实现是RequireJS,SeaJs, nodeJs;
2,CommonJs主要针对服务端,AMD/CMD主要针对浏览器端,(服务端一般采用同步加载文件,就是说需要加载某个模块的时候,服务端便停下来,等待它加载完再执行,浏览器段要保证效率,采用异步加载,就需要一个预处理,提前将所需要的文件并行加载好)
3,AMD/CMD区别,虽然都是并行加载js文件,区别是AMD是预加载,在并行加载js文件同时,还会解析执行该模块,CMD是懒加载,虽然一开始并行加载js文件,但是不会执行,而是在需要的时候才执行;
CommonJs
主要针对服务端(同步加载文件),对应的实现是nodejs
CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块标识(module)}
require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身。
AMD
主要针对浏览器端(异步加载文件),预加载文件。对应的实现是requirejs
AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:require([modules], callback);
第一个参数[modules],是需加载的模块名数组;第二个参数callback,是模块加载成功之后的回调函数
CMD
主要针对浏览器端(异步加载文件),按需加载文件。对应的实现是seajs
AMD 是提前执行,CMD 是延迟执行。CMD 推崇依赖就近,AMD 推崇依赖前置。