1.script標簽 1.js代碼的解析(包括下載js文件)會阻塞頁面載入 2.當js文件放在頭部,頁面必須等所有js代碼都被下載,解析和執行完成後才開始呈現頁面內容(遇到body標簽才呈現),對於那些需要很多js文件的頁面來說,會有很大的延遲,瀏覽器頁面空白時間, 所以儘量把全部js文件引用放在b ...
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)適應未來