JS ESModule
JS ESModule
要在原生瀏覽器運行ESModule
需要在script tag
加上type="module"
,才能使用ESModule
<script type="module"> |
匯出
預設匯出
每個檔案唯一,在vue
開發中可用來匯出元件
在資料夾根目錄創建預設匯出範例程式export1.js
export default { |
具名匯出
可以匯出多個,在第三方框架,套件,函式經常看到
根目錄創建export2.js
export const num = 10; |
匯入
預設匯入
預設匯出沒有名子,所以可以自己加上,為他取名export1
,可以在console
看到輸出結果
<script type="module"> |
具名匯入
單一匯入
建議此寫法
<script type="module"> |
全部匯入
全部匯出可能造成名稱衝突,所以要用 as 賦予名子
不建議此寫法,錯誤較難發現
<script type="module"> |
SideEffect
side effect
又稱副作用,因其效果不是可以預測的,因為他裡面內容可能會覆蓋你所寫的現有內容,這就是副作用,因此裡面的內容需要審慎評估,以免影響到現有內容。
side effect
並無進行匯出,但匯入後會立即執行,在很多舊套件是採用此種方式
新建SideEffect.js
並匯入
(function (global) { |
可以看到他輸出JQuery
<script type="module"> |
後記
每一個type="module"
都是獨立的作用域
舉範例來說,可以看到下面的script
程式碼是讀取不到window.a
的
<script type="module"> |
window.a的變數的
但是在這個範例中,把script tag
加上 type="module"
,是讀取的到window.a
的變數的,不過在實戰中這種例子很少見,所以還是把它想成type="module"
都是獨立的作用域
<script type="module"> |
匯入 ESM 套件
舉Vue
為例,我們就沒有把整個Vue
匯入只會入createApp
,可以看到匯入的 CDN
有 esm-browser
,就是可以給 browser 使用的ESModule
<div id="app"> |
評論
ValineDisqus