defer/async

<script>(默认模式)

脚本的下载和执行会阻塞html的解析

在这里插入图片描述

<script async>

脚本的下载阶段是异步的,不会阻塞html的解析,一旦下载完成,脚本便会执行,此时开始阻塞html的解析

在这里插入图片描述

<script defer>

脚本的下载阶段同样是异步的,不会阻塞html的解析,下载完成后不会立即执行,而是等待解析阶段完成后再执行

在这里插入图片描述

适用场景

  • 当你的js是个独立的模块且不依赖任何js,使用 async。(因为async并不保证按照书写的顺序执行脚本,防止出现后面引入的脚本依赖前面引入的脚本,同时后面的脚本先下载完成就开始执行的情况)
// B依赖A,但是B先下载完毕执行
<script src='A.js' async />
<script src='B.js' async />
  • 如果出现上述情况,则可以使用defer,因为A.js和B.js都下载完成后,会按书写顺序开始执行,即
// B依赖A
<script src='A.js' defer />
<script src='B.js' defer  />
  • 当A.js较小时,也可以将引入模式改为默认
// B依赖A
<script src='A.js' />
<script src='B.js' async />

注意

在一些旧版的浏览器中,defer脚本并不一定按照书写顺序执行


参考
async vs defer attributes
拒绝js阻塞—defer、async作用和区别分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值