HTML 的 script 标签中 defer 和 async 的区别

defer 和 async 都英语控制脚本的加载和执行,都是一部加载外部的 JS 脚本文件,两者都不会阻塞 HTML 的解析。

绿色代表 HTML 解析,蓝色代表 JS 脚本网络加载时间,红色是 JS 脚本执行时间。

defer 会等 DOM 加载完之后才执行,async 则是脚本一直加载完就立即执行。

javascript 复制代码
<script src="lib.js" defer></script>
<script src="main.js" defer></script>

defer 使用场景主要是确保 DOM 完全加载和多个脚本相互依赖的情况,比如确保上述代码中两个脚本按顺序加载。虽然 js 本来就是从上往下执行,但加上 defer 更严谨,可以阻止页面渲染的阻塞、网络延迟、加载时间不同而导致执行顺序的改变。

async 的使用场景,比如想广告内容,不需要等整个页面加载好就跳出来,还有线上考试,网速慢导致试卷还没加载好,但计时器可能就已经开始计时了。

相关推荐
神色自若6 小时前
vue3 带tabs的后台管理系统,切换tab标签后,共用界面带参数缓存界面状态
前端·vue3
мо仙堡杠把子ご灬6 小时前
微前端架构实践:避免Vuex模块重复注册的崩溃陷阱
前端
叫我:松哥6 小时前
基于机器学习的地震风险评估与可视化系统,采用Flask后端与Bootstrap前端,系统集成DBSCAN空间聚类算法与随机森林算法
前端·算法·机器学习·flask·bootstrap·echarts·聚类
呆头鸭L6 小时前
用vue3+ts+elementPlus+vite搭建electron桌面端应用
前端·vue.js·electron
aPurpleBerry6 小时前
React Hooks(数据驱动、副作用、状态传递、状态派生)
前端·react.js·前端框架
IT_陈寒6 小时前
2025年React生态最新趋势:我从Redux迁移到Zustand后性能提升40%的心得
前端·人工智能·后端
前端小臻6 小时前
react没有双向数据绑定是怎么实现数据实时变更的
前端·javascript·react.js
困惑阿三6 小时前
CSS 动效交互实验室
前端·css
哟哟耶耶6 小时前
随笔小计-前端经常接触的http响应头(跨域CORS,性能-缓存-安全,token)
前端·网络协议·http
Allen_LVyingbo6 小时前
病历生成与质控编码的工程化范式研究:从模型驱动到系统治理的范式转变
前端·javascript·算法·前端框架·知识图谱·健康医疗·easyui