defer和async属性详解
生活随笔
收集整理的這篇文章主要介紹了
defer和async属性详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
script標簽的加載是同步執行的,也就是說如果將JavaScript文件放在head標簽中時,必須等所有JavaScript代碼下載、解析和解釋完畢后,才能開始渲染頁面 (頁面在解析到body標簽時,開始渲染),這樣的話,當js文件過多時,會導致渲染延遲,瀏覽器空白的情況,因此一般情況我們將js文件放在頁面內容之后。并且提出了延遲執行腳本異步執行腳本,通過給script標簽添加屬性defer或者async來實現。
1.推遲執行腳本_defer
添加了defer屬性的腳本會告訴瀏覽器,立即下載該腳本,但是等整個頁面解析完畢后再運行。HTML5規范要求腳本按照出現順序執行,即如果兩個腳本都設置了defer屬性,那么等頁面解析完畢后,先執行第一個腳本,再執行第二個腳本。但是在實際中,推遲執行的腳本不一定會按照順序執行,因此最好只有一個推遲執行腳本
2.異步執行腳本_async
添加了async屬性的腳本會告訴瀏覽器,立即下載該腳本,且不阻止頁面其他動作,即,不必等到腳本下載和執行完再加載頁面,也不必等該異步腳本下載和執行后再加載其他腳本。因此,如果出現兩個異步腳本,則不能確定它們的執行順序。值得注意的是,異步腳本不應該在加載期間修改DOM
總結
以上是生活随笔為你收集整理的defer和async属性详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue_组件插槽详述
- 下一篇: 避坑_node-sass安装问题及解决办