news 2026/9/3 1:51:57

一文大白话讲清楚script加载和执行顺序,包括script标签、defer、async、动态script等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一文大白话讲清楚script加载和执行顺序,包括script标签、defer、async、动态script等

一文讲清楚script加载和执行顺序,包括script标签、defer、async、动态script等

1. 普通script标签

  • 先说原理,一个HTML文档,里面有会有html和script等
  • 浏览器一般是按照顺序解析执行的,比如下面的代码
<div>I`m Html</div><script>console.log('I`m script from script tag with no src')</script><div>I`m html ,too</div><scriptsrc='test.js'></script>/** * test.js * console.log('I`m script from script tag with src') */
  • 浏览器的解析和执行顺序是这样的

  • 也就是说浏览器是按行解析,按行执行的,如果执行到带有外部链接的script标签,就全部加载,然后执行,执行完以后再继续往下走

  • 这样就会有一个问题

  • 如果某一个出在文档中间的script标签很大,执行耗费了很长的时间,那么标签下面的HTML内容就得不到渲染,就会造成页面的卡顿

  • 聪明的你立刻就提出了解决方案,说把所有的script放在页面的底部,是不是就解决了问题,

  • 然而并不完美,以为这样的话,浏览器必须下载解析完所有的HTML内容,才会处理script,如果script里面有对HTML内容的改变,就会明显的延迟和跳动

  • 那应该怎么办呢

  • 先分析现在的问题是什么,是HTML的解析执行和script解析执行在同一个线程里,发生了资源竞争,也就是说我执行的时候你就得停,你执行的时候我就得停

  • 那怎么解决呢,那就让分开,也就是HTML你执行你的,script标签我执行我的,互不干扰,这不是不是好点了,怎么分开了,我们自然的想到了使用异步加载script

  • 那怎么实现异步呢,问得好,script标签有两个完美的特性defer和async可以实现异步

  • 他两都可以实现让script标签跟HTML分开加载和解析执行

  • 那有啥区别呢

2. defer

  • 首先说defer,他可以告诉浏览器,如果你碰到我,不要等待我加载和执行完,你继续往下处理你的HTML,我会在后台自己加载,等你处理完HTML构建出DOM,我再执行
<div>I`m Html</div><scriptdefersrc
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:46:49

计算机Java毕设实战-基于springboot的课程互助学习系统基于springboot+vue的校园互助系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 23:59:29

2026年最新权威AI编程软件评测和推荐

随着人工智能技术从试验阶段迈向规模化应用&#xff0c;AI编程工具已成为开发者提升效率、重构工作流程的核心引擎。2025年至2026年&#xff0c;市场正从单一的“代码补全”工具&#xff0c;激烈演变为覆盖全流程、高度自动化的“智能体&#xff08;Agent&#xff09;”驱动范式…

作者头像 李华
网站建设 2026/9/2 23:58:45

艾曲波帕vs其他升血小板药物:肿瘤化疗患者该怎么选?

肿瘤化疗患者血小板减少的治疗中&#xff0c;升血小板药物的合理选择直接关系到治疗效果和患者安全。目前临床常用的升血小板药物种类较多&#xff0c;不同药物在作用机制、给药方式、疗效特点、安全性等方面存在差异&#xff0c;因此&#xff0c;为化疗患者选择合适的升血小板…

作者头像 李华
网站建设 2026/9/3 0:01:57

SQL性能瓶颈破局:Explain分析+实战优化全攻略

SQL性能瓶颈破局&#xff1a;Explain分析实战优化全攻略你是否曾为数据库查询性能低下而苦恼&#xff1f;面对复杂的业务场景&#xff0c;如何快速定位查询瓶颈并实施优化&#xff1f;本文将通过一系列真实案例&#xff0c;带你深入剖析SQL查询优化的精髓&#xff0c;从Explain…

作者头像 李华
网站建设 2026/9/3 0:39:44

深入解析 C# async/await 执行原理:从语法糖到状态机

异步编程是C#开发中提升程序吞吐量的核心手段&#xff0c;而async/await作为异步编程的“语法糖”&#xff0c;极大简化了异步代码的编写逻辑。但多数开发者仅停留在“会用”层面&#xff0c;对其底层执行原理、状态机的工作机制一知半解。本文将从业务代码执行流程到状态机底层…

作者头像 李华