摘要:導(dǎo)入模塊的代碼執(zhí)行后,實例化過的模塊被保存在內(nèi)存中,只要另一個語句引用它就可以重復(fù)使用它和的一個重要的限制是它們必須在其它語句和函數(shù)之外使用,也就是說不允許出現(xiàn)在語句中,不能有條件導(dǎo)出或以任何方式動態(tài)導(dǎo)出。
什么是模塊
模塊是自動運行在嚴格模式下并且沒有辦法退出運行的Javascript代碼
在模塊的頂部this的值是undefined
其模塊不支持html風(fēng)格的代碼注釋
除非用default關(guān)鍵字,否則不能用這個語法導(dǎo)出匿名函數(shù)或類
任何未顯示導(dǎo)出的變量、函數(shù)或類都是模塊私有的,無法從模塊外部訪問
import {identifier1,identifier2} from "./example.js"
import大括號表示給定模塊導(dǎo)入的綁定,文件必須把文件擴展名也加上擴展名
導(dǎo)入綁定的列表看起來與解構(gòu)對象很相似,但它不是
當(dāng)從模塊中導(dǎo)入一個綁定時,它就好像使用const定義的一樣
不管是在import語句中把一個模塊寫了多少次,該模塊將只招待一次。導(dǎo)入模塊的代碼執(zhí)行后,實例化過的模塊被保存在內(nèi)存中,只要另一個import語句引用它就可以重復(fù)使用它
export和import的一個重要的限制是它們必須在其它語句和函數(shù)之外使用,也就是說不允許出現(xiàn)在if語句中,不能有條件導(dǎo)出或以任何方式動態(tài)導(dǎo)出。模塊語法存在的一個原因是讓js引擎靜態(tài)確定哪些可以導(dǎo)出,因此只能在模塊頂部使用export
export、import都可以用as來重命名導(dǎo)出的函數(shù)名
為默認導(dǎo)出值指定標(biāo)識符指定重命名語法:
function sum(num1, num2) { return num1 + num2 } //export default sum export { sum as default }
看下面這個例子:
export let color = "red" export default function (num1, num2) { return num1 + num2 } import sum,{color} from "./example.js"
import 和export 組合使用
export {sum as add } from "./example.js"