news 2026/4/26 2:32:34

一文大白话讲清楚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/4/23 13:42:59

Redis 设计思想总结

设计背景 高性能缓存需求: 在2009年前后&#xff0c;Web应用规模迅速扩大&#xff0c;大量读请求对数据库造成巨大压力。开发者需要一种快速、轻量级的内存数据存储系统来缓存热点数据&#xff0c;减轻后端数据库负载。简单性与灵活性: 当时已有的缓存系统&#xff08;如 Memca…

作者头像 李华
网站建设 2026/4/18 19:20:02

AI提示系统的商业模式的用户分层:提示工程架构师的3个方法

AI提示系统商业模式拆解:提示工程架构师的用户分层3步法 副标题:从需求到变现,用分层策略优化提示服务的商业价值 摘要/引言 当我们谈论AI提示系统的商业潜力时,最常遇到的问题不是“技术能不能实现”,而是“如何把技术价值转化为商业价值”。 问题陈述: 通用型提示服…

作者头像 李华
网站建设 2026/4/18 15:51:32

操作系统核心考点与解题模板全解析

操作系统核心考点解析&#xff1a;模块一进程管理、同步互斥与死锁本模块涵盖操作系统中最核心的逻辑部分&#xff0c;侧重于理解进程行为及处理并发冲突。1. 进程状态转换 (State Transitions)理解进程状态的“变迁逻辑”是解题的关键。转换路径触发原因注意点就绪 → 运行进程…

作者头像 李华
网站建设 2026/4/25 18:10:34

2025 四款 AI 平台推荐,谁最高效

2025年&#xff0c;AI应用落地需求持续爆发。开源平台以其灵活性、可控性和低成本&#xff0c;成为众多开发者与企业的首选。面对琳琅满目的工具&#xff0c;如何根据自身需求做出高效选择&#xff1f;本文将从功能完整性、易用性、扩展性、社区生态、商用支持五个核心维度&…

作者头像 李华
网站建设 2026/4/25 17:17:08

基于SpringBoot+Vue的泰山文化推广平台毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于SpringBootVue的泰山文化推广平台&#xff0c;以实现泰山文化的数字化传播与推广。具体研究目的如下&#xff1a;提高泰山文化知名度&…

作者头像 李华