第二十三章 Module 的載入實現
上一章介紹了模組的語法,本章介紹如何在瀏覽器和 Node 之中載入 ES6 模組,以及實際開發中經常遇到的一些問題(比如迴圈載入)。
1 瀏覽器載入
defer與async的區別是:defer要等到整個頁面在記憶體中正常渲染結束(DOM 結構完全生成,以及其他指令碼執行完成),才會執行;async一旦下載完,渲染引擎就會中斷渲染,執行這個指令碼以後,再繼續渲染。一句話,defer是“渲染完再執行”,async是“下載完就執行”。另外,如果有多個defer指令碼,會按照它們在頁面出現的順序載入,而多個async指令碼是不能保證載入順序的。
2 載入規則
瀏覽器載入 ES6 模組,也使用<script>標籤,但是要加入type="module"屬性。
瀏覽器對於帶有type="module"的<script>,都是非同步載入,不會造成堵塞瀏覽器,即等到整個頁面渲染完,再執行模組指令碼,等同於開啟了<script>標籤的defer屬性。
<script type="module" src="./foo.js"></script>
<!-- 等同於 -->
<script type="module" src="./foo.js" defer></script>
如果網頁有多個<script type="module">,它們會按照在頁面出現的順序依次執行。
ES6 模組也允許內嵌在網頁中,語法行為與載入外部指令碼完全一致。
<script type="module">
import utils from "./utils.js";
// other code
</script>
2. ES6 模組與 CommonJS 模組的差異
3. Node 載入
4. 迴圈載入
5. ES6 模組的轉碼
相關文章
- 如何實現 node module 模組匯入
- Angular專案中核心模組core Module只載入一次的實現Angular
- 載入更多 功能的實現
- ES6 module載入機制
- Tomcat 類載入器的實現Tomcat
- JS實現載入層JS
- 淺談Node中module的實現原理
- Webpack的Code Splitting實現按需載入Web
- 小說APP原始碼的圖片載入方式,懶載入和預載入的實現APP原始碼
- 滾動載入圖片(懶載入)實現原理
- VUE如何實現按需載入?Vue
- 圖片懶載入實現
- Flutter實現"劍氣"載入?️Flutter
- iOS 實現簡單的列表預載入iOS
- Node.js常用模組Module的載入機制與使用Node.js
- 圖片懶載入js實現JS
- Python實現模組熱載入Python
- 如何實現圖片預載入和載入進度條
- 從module的簡單實現到模組化
- 實現圖片懶載入的三種方式
- 優雅的實現動態載入 css、jsCSSJS
- JVM效能最佳化 —— 類載入器,手動實現類的熱載入JVM
- react非同步載入元件實現解析React非同步元件
- uni-app實現上拉載入APP
- ajax實現頁面非同步載入非同步
- [譯] 原生實現圖片懶載入
- React如何實現圖片懶載入React
- 實現圖片懶載入(throttle, debounce)
- Go實現啟動引數載入Go
- vue12-ElementUI tree元件懶載入的實現VueUI元件
- 多層巢狀後的 Fragment 懶載入實現巢狀Fragment
- 基於react的lazy-load懶載入實現React
- 使用require.context實現優雅的預載入UIContext
- antd圖示庫按需載入的外掛實現
- 用最短的javascript實現位址列載入指令碼JavaScript指令碼
- php 自動類載入類 composer.json 實現自動載入PHPJSON
- GO get 安裝特別慢的問題以及 goland 載入 go moduleGoLand
- 如何實現 SAP UI5 的 Lazy Loading(延遲載入,懶載入)試讀版UI