您的位置:首页 > 汽车 > 时评 > 怎么做自己的网站自建一个页面_垂直门户网站_技术培训班_百度一下官网首页百度一下百度

怎么做自己的网站自建一个页面_垂直门户网站_技术培训班_百度一下官网首页百度一下百度

2025/4/23 12:20:35 来源:https://blog.csdn.net/qq_43474235/article/details/147197769  浏览:    关键词:怎么做自己的网站自建一个页面_垂直门户网站_技术培训班_百度一下官网首页百度一下百度
怎么做自己的网站自建一个页面_垂直门户网站_技术培训班_百度一下官网首页百度一下百度

一、背景与问题

在网页性能优化中,脚本的加载和执行方式直接影响页面渲染速度和用户体验。传统 <script> 标签的阻塞行为可能导致页面“白屏”,而 asyncdefer 属性提供了非阻塞的解决方案。本周重点研究二者的差异、适用场景及实际应用。


二、核心概念解析

1. 默认 <script> 的行为

  • 阻塞 HTML 解析‌:浏览器遇到 <script> 标签时,会暂停 HTML 解析,下载并执行脚本,完成后继续解析。
  • 问题‌:大脚本或网络延迟时,显著延长页面渲染时间。

2. async 属性

  • 行为‌:
    • 脚本异步下载(与 HTML 解析并行)。
    • 下载完成后立即执行‌,执行时会再次阻塞 HTML 解析。
  • 特点‌:
    • 脚本执行顺序‌不确定‌(先下载完的先执行)。
    • 适用于‌独立且无依赖‌的脚本(如统计分析、广告 SDK)。

3. defer 属性

  • 行为‌:
    • 脚本异步下载(与 HTML 解析并行)。
    • 脚本延迟到 ‌HTML 解析完成后、DOMContentLoaded 事件前‌ 按顺序执行。
  • 特点‌:
    • 执行顺序与声明顺序‌严格一致‌。
    • 适用于‌依赖 DOM 或其他脚本‌的场景(如页面初始化逻辑)。

4. 对比表格

属性加载方式执行时机执行顺序适用场景
默认同步立即执行按声明顺序
async异步下载完立即执行不确定独立脚本(如 GA 统计)
defer异步HTML 解析后顺序执行按声明顺序依赖型脚本

三、示例与验证

代码示例

<script src="script1.js" async></script>  
<script src="script2.js" defer></script>  
<script src="script3.js"></script>执行顺序模拟
默认脚本‌:script3.js 阻塞 HTML 解析,优先执行。
async 脚本‌:若 script1.js 下载速度快于 HTML 解析,可能先于 defer 脚本执行。
defer 脚本‌:script2.js 在 HTML 解析完成后按顺序执行。
四、最佳实践
优先使用 defer‌:确保脚本顺序执行且不阻塞渲染。
谨慎使用 async‌:仅用于无依赖的第三方脚本。
动态脚本‌:通过 document.createElement('script') 插入的脚本默认具有 async 行为。
五、兼容性与注意事项
兼容性‌:
defer 支持所有主流浏览器(包括 IE10+)。
async 不支持 IE9 及以下。
注意点‌:同时使用 async 和 defer 时,现代浏览器以 async 优先。附录‌MDN 文档
测试 Demo 链接(可选)
text
Copy Code### 说明  
1. &zwnj;**兼容性**&zwnj;:此 Markdown 文件可被所有支持 Markdown 的工具(如 Typora、VS Code、GitHub)正确解析。  
2. &zwnj;**语法重点**&zwnj;:  - 代码块用 ` ````包裹,并指定语言(如 `html`)。  - 表格使用 `|` 分隔列,`---` 分隔表头。  - HTML 标签用反引号包裹避免解析冲突(如 ``<script>``)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com