AMD、CMD 和 CommonJS的区别

#####AMD 与 CommonJS

Node.js的模块系统是参照CommonJs规范实现的,RequireJS是参照AMD规范实现的。

CommonJS使用exports对象来定义模块。

AMD中使用define,在模块加载之前声明依赖。

AMD更适合浏览器,因为它支持异步加载模块依赖。

requireJS在实现AMD的同时,还提供了一个CommonJS包裹,这样CommonJS模块可以几乎直接被RequireJS引入。

define(function(require, exports, module) {
var someModule = require('someModule'); // in the vein of node    
exports.doSomethingElse = function() { return       someModule.doSomething() + "bar"; };
});

#####AMD 与 CMD

SeaJS是参照CMD思想实现的。

知乎上面简洁明了的回答:




















方案优势劣势特点
AMD速度快会浪费资源预先加载所有的依赖,直到使用的时候才执行
CMD只有真正需要才加载依赖性能较差直到使用的时候才定义依赖

CMD定义规范

AMD定义规范

SeaJS与RequireJS的不同