在說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有全局的和局部的