1.script標籤
1.js程式碼的解析(包括下載js檔案)會阻塞頁面載入
2.當js檔案放在頭部,頁面必須等所有js程式碼都被下載,解析和執行完成後才開始呈現頁面內容(遇到body標籤才呈現),對於那些需要很多js檔案的頁面來說,會有很大的延遲,瀏覽器頁面空白時間, 所以儘量把全部js檔案引用放在body標籤內的最底部,先呈現內容,使用者體驗更好
2.defer延遲指令碼
script標籤加上defer屬性,瀏覽器會非同步地下載該檔案,不會影響後續dom的渲染,如果有多個defer的script標籤,則會按順序執行所有的script;defer指令碼會在文件渲染完畢後,DomContentLoad前執行
Dom文件載入步驟:
(1)解析html結構
(2)載入外部指令碼和樣式表檔案
(3)解析並執行指令碼程式碼
(4)構造HTML DOM模型 //DOMContentLoaded執行點
(5)載入圖片等外部檔案
(6)頁面載入完畢 //load
3.async非同步指令碼
告訴瀏覽器非同步下載async屬性檔案,async不保證指令碼的執行順序,先載入完先執行
4.嵌入程式碼與外部檔案
外部檔案優點:
(1)可維護性:不必觸及html標記,專心編輯js
(2)可快取: 引用同一個外部檔案可被瀏覽器快取,只需下載一次
(3)適應未來