JavaScript 模組載入特性

antzone發表於2017-03-13

更多關於模組載入內容可以參閱ES2015 Module模組一章節。

一.編譯時確定依賴關係:

ES2015模組在編譯時期就可以確定相互之間的依賴關係,以及輸入和輸出關係。

而社群指定的某塊載入方案,比如CommonJS都只能在執行時確定上述關係。

二.輸出的值是動態繫結關係:

export語句輸出的介面,與其對應的值是動態繫結關係,即通過該介面,可以取到模組內部實時的值。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
export var webName = "螞蟻部落";
setTimeout(() => webName = "antzone", 500);

上面程式碼輸出變數webName,值為"螞蟻部落",500毫秒之後變成"antzone";其他某塊能夠通過介面獲取輸出內容的實時值。

ES6模組的執行機制與CommonJS不一樣,它遇到模組載入命令import時,不會去執行模組,而是隻生成一個動態的只讀引用。等到真的需要用到時,再到模組裡面去取值,原始值變了,import輸入的值也會跟著變。因此,ES6模組是動態引用,並且不會快取值,模組裡面的變數繫結其所在的模組。


相關文章