script标签属性defer和async的作用
发布日期:2021-11-21 16:35:52 浏览次数:9 分类:技术文章

本文共 631 字,大约阅读时间需要 2 分钟。

在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行。

HTML5规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行,而这两个脚本会先于DOMContentLoaded事件执行。在现实当中,延迟脚本并不一定会按照顺序执行,也不一定会在DOMContentLoad时间触发前执行,因此最好只包含一个延迟脚本。

async只适用于外部脚本文件,并告诉浏览器立即下载文件。并不保证按照它们的先后顺序执行。第二个脚本文件可能会在第一个脚本文件之前执行。因此确保两者之间互不依赖非常重要。指定async属性的目的是不让页面等待两个脚本下载和执行,从而异步加载页面其他内容。

一个普通的<script>标签的加载和解析都是同步的,会阻塞DOM的渲染,这也就是我们经常会把<script>写在<body>底部的原因之一,为了防止加载资源而导致的长时间的白屏,另一个原因是js可能会进行DOM操作,所以要在DOM全部渲染完后再执行。

1.defer和async在网络加载过程是一致的,都是异步执行的;

2.两者的区别在于脚本加载完成之后何时执行,可以看出defer更符合大多数场景对应用脚本加载和执行的要求;
3.如果存在多个有defer属性的脚本,那么它们是按照加载顺序执行脚本的;而对于async,它的加载和执行是紧紧挨着的,无论声明顺序如何,只要加载完成就立刻执行,它对于应用脚本用处不大,因为它完全不考虑依赖。

转载地址:https://blog.csdn.net/yyychocolate/article/details/108252603 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:VUE EventEmit实现
下一篇:浏览器渲染过程

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月17日 13时57分09秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

助力职场的这4项软技能很重要 2019-04-27
binlog server伪装master恢复增量数据 2019-04-27
最受欢迎的微服务框架概览 2019-04-27
自己动手写SQL执行引擎 2019-04-27
关于数据库、数据治理、AIOps的这些痛点,你需要知道! | DAMS 2020 2019-04-27
MySQL流转工具Maxwell的代码改造和优化小结 2019-04-27
互动赠书:简历中常见的问题,献给1024的骚年 2019-04-27
与 DevOps 面对面 2019-04-27
CPU占用又爆了?MySQL到底在干什么 2019-04-27
招贤纳士-第17期,来自北京,西安的职位 2019-04-27
秋招拿了7个offer,分享一些反思和经验 2019-04-27
一文带你深扒ClassLoader内核,揭开它的神秘面纱! 2019-04-27
看GitHub 2020年度报告有感 2019-04-27
MySQL如何管理客户端连接?线程池篇 2019-04-27
VScode 折叠函数快捷键 合上函数 2019-04-27
智能家居传感器:BME680--树莓派3B+ 搭配BME680的数据读取温湿度和气压。树莓派IIC BME680算法库 (未完成版本) 2019-04-27
domoticz智能家居系统 MQTT 异常以及解决方法 code=14 2019-04-27
智能家居传感器:BME680--树莓派3B+ 搭配BME680的数据读取温湿度和气压。树莓派IIC BME680算法库完整版 2019-04-27
lua语言笔记--注册dll内的函数到全局,lua 全局函数的注册 2019-04-27
工作笔记::c++ 运行命令行脚本 启动lua cmd lua 顺序执行多个文件的方法 c++ 开启一个命令行的方法 lua 启动多个文件 2019-04-27