一、CommonJS(NodeJS)
命令:module、exports、require、global
特點(diǎn):commonJS用同步的方式加載模塊
二、AMD(RequireJS)
命令:define()定義模塊,用require()加載模塊
特點(diǎn):異步加載模塊
三、CMD(Sea.js)
命令:define()定義模塊,用require()加載模塊
特點(diǎn);CMD是另一種js模塊化方案,它與AMD很類似,不同點(diǎn)在于:AMD 推崇依賴前置、提前執(zhí)行,CMD推崇依賴就近、延遲執(zhí)行
四、ES6
命令:export(export default)? import
特點(diǎn):靜態(tài)加載模塊
語(yǔ)法特點(diǎn):
1、export 和?export default 模塊引入方式不一樣
2、export語(yǔ)句輸出的接口,與其對(duì)應(yīng)的值是動(dòng)態(tài)綁定關(guān)系,即通過該接口,可以取到模塊內(nèi)部實(shí)時(shí)的值
五、ES6與CommonJS 差異
1、運(yùn)行時(shí)加載: CommonJS 模塊就是對(duì)象;即在輸入時(shí)是先加載整個(gè)模塊,生成一個(gè)對(duì)象,然后再?gòu)倪@個(gè)對(duì)象上面讀取方法,這種加載稱為“運(yùn)行時(shí)加載”
2、編譯時(shí)加載: ES6 模塊不是對(duì)象,而是通過?export?命令顯式指定輸出的代碼,import時(shí)采用靜態(tài)命令的形式。即在import時(shí)可以指定加載某個(gè)輸出值,而不是加載整個(gè)模塊,這種加載稱為“編譯時(shí)加載”。