一起了解script标签中的async和defer属性


当前第2页 返回上一页

这个属性在标准中,同时也支持通过 JavaScript 动态插入 <script> 的情况。例如:

1

2

3

const script = document.createElement('script')

script.src = "/something/awesome.js"

document.body.append(script)

动态创建的 <script>,默认就是异步载入;但可以通过设定属性将它关闭:

1

script.async = false

type=”module”

在主流的现代浏览器中,<script> 的属性可以加上 type="module"。这时浏览器会认为这个文件是一个JavaScript 模块,其中的解析规则、执行环境会略有不同;这时 <script> 的默认行为会像是 defer 一样,在后台下载,并且等待 DOM 解析、渲染完成之后才会执行,所以 defer 属性无法在 type="module" 的情况下发生作用。但同样可以通过 async 属性使它在下载完成后即刻执行。

用法

现在你应该明白这两个属性的特点了,那么该怎样正确地使用呢?

defer 由于后台载入、不打断渲染及确保执行顺序的特点,基本上在没特殊需求的情况下,在 <script> 中设置一下就行了;当然 <script> 本身的摆放顺序还是要稍微留心一下。

async 比较特别,因为在下载后会立刻执行,且不保证执行顺序,一般常见的应用是设定在完全独立的小小模块中,例如背景Logo、页面广告等,在避免造成使用者体验变差的同时,尽量早的产生效果。

现在前端开发大都通过 Webpack 等打包工具来辅助处理,很少有自己设定这些属性的机会;开发者可以通过 script-ext-html-webpack-plugin 等插件的帮助,将切分好的 Chunk 设定个别需要的 <script> 属性。

总结

asyncdefer<script> 专属的属性,对于网页中的其他资源,可以通过 <link>preloadprefetch 属性,来帮我们延迟加载 未来才需要用到的资源。

虽然 <script>asyncdefer 这些属性的设置大都已经包含在现代框架的打包流程中了,但只有扎实的认识这些网页最基础的规范,才能明白自己写出来的代码最后会产生什么效果。

更多编程相关知识,请访问:编程视频课程!!

以上就是一起了解script标签中的async和defer属性的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

html的特殊字符-css3 content:"特殊符号"应该如何使用

html首行缩进怎么设置

html button标签是否有超链接?这有button标签设置超链接的实例

html怎么禁止缓存

介绍javascript作用域和闭包

html换行符

javascript运行没有效果是怎么回事?

margin-top在html中的意思是什么

javascript变量有几种类型

关于html5中标签video播放的新解析

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...