async和defer

當(dāng)瀏覽器碰到script腳本時:

Paste_Image.png

1.不加屬性

<script src="script.js"></script>

沒有async和defer,瀏覽器會立即加載并執(zhí)行指定腳本,渲染該 script 標(biāo)簽之下的文檔元素之前,也就是說不等待后續(xù)載入的文檔元素,讀到就加載并執(zhí)行。

Paste_Image.png

2.加async

<script async src="script.js"></script>

有 async,加載和渲染后續(xù)文檔元素的過程將和 script.js 的加載與執(zhí)行并行進(jìn)行(異步)。async 在HTML解析過程中下載文件,并在完成下載后暫停HTML解析器執(zhí)行。

Paste_Image.png

3.加defer

<script defer src="myscript.js"></script>

有 defer,加載后續(xù)文檔元素的過程將和 script.js 的加載并行進(jìn)行(異步),但是 script.js 的執(zhí)行要在所有元素解析完成之后,DOMContentLoaded 事件觸發(fā)之前完成。

Paste_Image.png

所以,async和defer都可以使加載后續(xù)和渲染后續(xù)文檔與script.js的加載異步進(jìn)行,他們的區(qū)別是下載完成后何時執(zhí)行,async是在加載完成后立即執(zhí)行;defer是按照加載順序執(zhí)行腳本,等所有元素解析完成后執(zhí)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容