一、三者都是JS的模块化规范。
二、CommonJS又和AMD、CMD有区别
2、1、CommonJS是基于JS的应用程序的(非浏览器端)模块化规范,主要用于服务器端的编程
2、2、AMD、CMD两者都是用于前端JS模块化规范
三、AMD和CMD的区别:
3、1AMD推崇依赖前置,CMD推崇就近依赖。
依赖前置:通俗得讲就是我们编写程序时需要那些模块(比如jQuery.js,zepto.js)需要预先加载好,然后在执行回调。
就近依赖:当需要某个模块的时候再加载响应的模块,减少HTTP请求。看代码:
//AMD
define(['./a','./b'], function (a, b) {
//依赖一开始就写好
a.test();
b.test();
});
//CMD
define(function (requie, exports, module) {
//依赖可以就近书写
var a = require('./a');
a.test();
...
//软依赖
if (status) {
var b = requie('./b');
b.test();
}
});
3.2、require.js是AMD的实现,sea.js是CMD的实现
总结:AMD的用户体验更好,因为都是需要预先加载好的模块;CMD的性能更好,因为只有在使用到某个模块的时候才进行加载的