現(xiàn)今通行的模塊化規(guī)范有三種AMD
、
CMD
和
Commonjs
(
AMD
和
CMD
是
Commonjs
衍生出來的模塊化,
Commonjs
應(yīng)該也是
CMD
)
服務(wù)器環(huán)境(CommonJs
)
2009
年,當(dāng)
nodejs
被美國程序員
Ryan Dah
開發(fā)出來后,
javascript
也可以作為服務(wù)器端語言,開發(fā)服務(wù)器功能,但是為了解決服務(wù)器端的復(fù)雜性,開發(fā)
Commonjs
來使
javascript
模塊化操作。
假定有一個數(shù)學(xué)模塊math.js
var math=require("math");
然后就可以調(diào)用它模塊方法了
var math=require("math");math.add(2,3);//
得到
5
瀏覽器環(huán)境(AMD
)
var math=require("math");math.add(2,3);//
得到
5
上面這段代碼是Commonjs
的模塊化,但是很明顯有一個缺點(diǎn),可以看出需要先加載
math
這個模塊,獲取再調(diào)用
add()
,這樣可能會瀏覽器出現(xiàn)卡死的情況,因為同步執(zhí)行,
js
沒有執(zhí)行完無法繼續(xù)加載頁面,所以就使用到
異步加載模塊
,AMD
就是異步加載模塊規(guī)范,待模塊加載完成后,自動回調(diào)方法。 require([module], callback);
require(['math'],function(math){
math.add(2,3);
});
這樣的話,就算模塊未加載完成也不會造成頁面假死
目前使用AMD
規(guī)范是流行庫,
require.js
和
curl.js
,異步模塊化益于瀏覽器端
來源:網(wǎng)絡(luò)