-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
彻底搞懂 async & defer #8
Comments
两者都不会阻止 document 的解析 |
那是否认为 defer 可以替代普通的 script 标签? |
@quanru 不可以啊 |
@xiaoyu2er 受教了~ |
普通script标签内有js,带defer的script标签内也有js,都有可能修改DOM。在修改dom这点上,怎么论证“defer不能替代普通的script标签”呢? |
赞 多谢分享 |
没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。
有 async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。
有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。 |
彻底搞懂 async & defer
TL;DR
两者都会并行下载,不会影响页面的解析。
defer 会按照顺序在 DOMContentLoaded 前按照页面出现顺序依次执行。
async 则是下载完立即执行。
兼容性
普通 script
先来看一个普通的 script 标签。
浏览器会做如下处理
defer
DOMContentLoaded
事件前 依次执行 d.js, e.js。async
DOMContentLoaded
事件前或者后 )其他
结论
Reference
The text was updated successfully, but these errors were encountered: