ES6推出的module系統是除了let、const等變數宣告之外,用來避免全域變數的干擾的利器。試想$符號代表jQuery,而 _ (底線符號)代表的是underscore還是lodash?
舊版本的js,命名與作用域確實挺傷腦筋的。
ES6的module系統提出了幾個關鍵字: import、export、default、from、as以及搭配的符號,用法其實不難。
|
|
我們用export default的方式將方法Hello匯出,default表示Hello是這個module預設的名稱,因此相對應的import就直接使用該名稱載入。也可以export匿名函數,import的時候也可以更改名稱,避免與載入的檔有相同的名稱:
|
|
通常一個module中往往會有多個需要匯出的function,我們也可以這樣做,例如:
|
|
不過每次都需要打export這個關鍵字也很麻煩,或者不是每個function都要export,上述做法會很難管理,可以將程式碼改為:
|
|
也有另一種方式寫起來相當直覺,就是搭配as與*符號:
|
|
這樣的方式也非常直覺好用。
ES6的class也是可以export的方式,用法也是一樣:
|
|
如果一個module內有多個class要export,也可以用大夸號的方式:
|
|
在react.js中,最常看到的大概是:
|
|