在ES6之前,社區(qū)制定了一些模塊加載方案,最主要的有CommonJS和AMD兩種。前者用于服務(wù)器,后者用于瀏覽器。ES6在語(yǔ)言規(guī)格的層面上,實(shí)現(xiàn)了模塊功能,而且實(shí)現(xiàn)得相當(dāng)簡(jiǎn)單,完全可以取代現(xiàn)有的CommonJS和AMD規(guī)范,成為瀏覽器和服務(wù)器通用的模塊解決方案。
Modules(模塊)
每一個(gè)ES6模塊都是一個(gè)包含JS代碼的文件,模塊本質(zhì)上就是一段腳本,而不是用 module 關(guān)鍵字定義一個(gè)模塊。默認(rèn)情況下模塊都是在嚴(yán)格模式下運(yùn)行。模塊功能主要由兩個(gè)命令構(gòu)成:export和import。export命令用于用戶自定義模塊,規(guī)定對(duì)外接口;import命令用于輸入其他模塊提供的功能,同時(shí)創(chuàng)造命名空間(namespace),防止函數(shù)名沖突。
export
export用于從給定文件(或模塊)導(dǎo)出函數(shù)和對(duì)象。
單個(gè)導(dǎo)出
批量導(dǎo)出
重命名導(dǎo)出
默認(rèn)導(dǎo)出,每個(gè)模塊只能有一個(gè)默認(rèn)導(dǎo)出:
import
import用于從外部模塊、其他腳本中導(dǎo)入函數(shù)、對(duì)象或者原型,這些被導(dǎo)入的模型必須在其他的模塊或者腳本中被導(dǎo)出的。
無(wú)對(duì)象導(dǎo)入,如果模塊包含一些邏輯要執(zhí)行,且不會(huì)導(dǎo)出任何對(duì)象,此類(lèi)對(duì)象也可以被導(dǎo)入到另一模塊中。
導(dǎo)入默認(rèn)對(duì)象,采用Default導(dǎo)出方式導(dǎo)出對(duì)象,該對(duì)象在import聲明中將直接被分配給某個(gè)引用。
批量導(dǎo)入
重命名導(dǎo)入
導(dǎo)入所有對(duì)象
import命令導(dǎo)入的對(duì)象可能是一個(gè)變量,也可能是一個(gè)函數(shù),或者一個(gè)類(lèi),要視具體情況而定。import與require的差異較大,好不要混用。
實(shí)例
f10_modules_math.js
f10_modules_app.js
f10_modules.js
掃一掃關(guān)注公眾號(hào)“第九程序”(微信ID:djxcx9),為你提供第一手熱門(mén)小程序,了解最新最全的小程序資訊和服務(wù)。