在說AMD 和 CMD 的區別之前,先說明commonjs,它的回調和amd、cmd的不同於:
commomjs加載完了所有模塊,才執行回調
amd和cmd是加載對應的模塊,就可以執行回調中對應的代碼
1、從官方推薦的寫法上面得出:
CMD ----- 依賴就近Js代碼
//CMD
define(function(require,exports,module){
var a = require('./a');
a.doSomthing();
});
AMD ----- 依賴前置
Js代碼
//AMD
define(['./a','./b'],function(a,b){
//......
a.doSomthing();
//......
b.doSomthing();
})
當然AMD也支持CMD的寫法。
2、執行順序上
a. CMD是延遲執行,推崇的是as lazy as possible
b. AMD是提前執行,requireJS從2.0開始可以延遲執行
3、api設計角度:
CMD的API推崇職責單一,沒有全局的require
AMD的API默認是一個當多個用:比如require有全局的和局部的
