網站加載的整個完整過程了。
1.首先瀏覽器從服務器接收到html代碼,然后開始解析html
2.構建DOM樹(根據html代碼自頂向下進行構建),並且在同時構建渲染樹
3.遇到js文件加載執行,將阻塞DOM樹的構建;遇到css文件,將阻塞渲染樹的構建
(script標簽中的defer屬性:構建DOM樹的過程和js文件的加載異步(並行)進行,但是js文件執行需要在DOM樹構建完成之后
script標簽中的async屬性:構建DOM樹、渲染樹的過程和js文件的加載和執行異步(並行)進行)
綜上所述,script標簽最好放在</body>標簽的前面,因為放在所有body中的標簽后面就不會出現網頁加載時出現空白的情況,可以持續的給用戶提供視覺反饋,同時在有些情況下,會降低錯誤的發生。
而css標簽應該放在<head></head>標簽之間,因為如果放在</body>標簽的前面,那么當DOM樹構建完成了,渲染樹才構建,那么當渲染樹構建完成,瀏覽器不得不再重新渲染整個頁面,這樣造成了資源的浪費。效率也不高。如果放在<head></head>之間,瀏覽器邊構建邊渲染,效率要高的多。
