script 标签中 defer 和 async 属性的区别

script 标签中的 defer Vs. async

在 HTML 中,script 标签可以使用 deferasync 属性来控制外部 JavaScript 脚本加载和执行的方式deferasync 都可以提高页面的加载性能,主要区别整理如下。

区别点 defer async
加载顺序 按顺序加载 异步加载,不保证加载顺序
执行顺序 按文档中出现的顺序执行 加载完立即执行,不保证执行顺序
执行时机 HTML 文档完全解析后执行 , 但在 DOMContentLoaded 事件之前 可能在 HTML 文档解析完成之前执行
阻塞行为 不会阻塞 HTML 的解析 ,浏览器解析 HTML 文档,脚本在后台异步加载 不会阻塞 HTML 的解析 ,浏览器解析 HTML 文档,脚本在后台异步加载
适用场景 需要保证执行顺序 ,并在文档解析完成后再执行的脚本。如依赖于 DOM 的脚本。 不依赖其他脚本不依赖 DOM 的独立脚本。如分析工具或广告脚本。

注意:如果不使用 deferasync 属性,浏览器在遇到 <script> 标签时会阻塞 HTML 解析,直到脚本加载和执行完毕后才继续解析。使用 deferasync 后,脚本的记载是异步的,由网络进程 实现,不会阻塞HTML 解析;脚本的执行是同步的,会占用渲染进程,defer 脚本的执行不会阻塞解析,但 async 脚本可能会阻塞 HTML 解析。

相关推荐
1024小神24 分钟前
Electron实现多tab页案例,BrowserView/iframe/webview不同方式的区别
前端·javascript·electron
H_ZMY27 分钟前
微信小程序 mp-html:专为小程序设计的富文本渲染组件
微信小程序·小程序·html
Amos_Web33 分钟前
Rust实战(四):数据持久化、告警配置与Web API —— 构建监控系统的功能闭环
前端·后端·rust
java水泥工38 分钟前
基于Echarts+HTML5可视化数据大屏展示-物流大数据展示
大数据·前端·echarts·html5·可视化大屏
U***e6339 分钟前
Vue自然语言
前端·javascript·vue.js
用户761736354011 小时前
浏览器渲染原理
前端·浏览器
拉不动的猪1 小时前
Vue 跨组件通信底层:provide/inject 原理与实战指南
前端·javascript·面试
得物技术1 小时前
从数字到版面:得物数据产品里数字格式化的那些事
前端·数据结构·数据分析
用户6600676685391 小时前
用 Symbol 解决多人协作中的对象属性冲突实战
前端·javascript
yinuo1 小时前
前端跨页面通讯终极指南①:postMessage 用法全解析
前端