JS載入

NAGISB發表於2024-09-13

同步載入

  • 阻塞模式,提高安全性
    • 過多JS載入會影響頁面效率
    • 預設情況下,JS是同步載入,及優先載入外部JS,只有當JS檔案載入完成,don和css才開始載入
<script src = 'index.js' ></script>

非同步載入

  • 非阻塞載入
    • 動態建立script
    • defer 延遲載入JS,等到HTML的DOM完全解析之後
    • async HTML的文件解析和指令碼的獲取同時進行
<script src = 'index.js' defer></script> #defer
<script src = 'index.js' async></script> #async

理解最佳化

  1. 瀏覽器解析html的DOM是從上到下的,JS預設為同步載入
  2. 先被解析head的JS資源, 在body沒有解析完之前會被繫結監聽

即:head的JS資源在頁面載入前,body的JS資源在頁面載入後逐一獲取JS
如:JS替換頁面全域性變數時, 需要將JS在body獲取, 或者在head進行defer
PS:網頁播放器一般放在body最底部,網頁播放器與內容相干甚少,直接按需求defer/async

預設

async

defer

  1. 預設: 提前載入並執行, 都佔用html解析
  2. async: 非同步載入, 獲取和解析同時, 執行佔用html解析
  3. defer: 非同步載入, 獲取完並不執行, 執行不佔用html解析

相關文章