渲染过程JS 文件的处理方式

news/2024/7/5 3:42:24

渲染过程中遇到 JS 文件怎么处理?(浏览器解析过程)

JavaScript 的加载、解析与执行会阻塞文档的解析,也就是说,在构建 DOM 时,HTML 解析器若遇到了 JavaScript,那么它会暂停文档的解析,将控制权移交给 JavaScript 引擎,等 JavaScript 引擎运行完毕,浏览器再从中断的地方恢复继续解析文档。

也就是说,如果你想首屏渲染的越快,就越不应该在首屏就加载 JS 文件,这也是都建议将 script 标签放在 body 标签底部的原因。当然在当下,并不是说 script 标签必须放在底部,因为你可以给 script 标签添加 defer 或者 async 属性。

async 和 defer 的作用是什么?有什么区别?(浏览器解析过程)

(1)脚本没有 defer 或 async,浏览器会立即加载并执行指定的脚本,也就是说不等待后续载入的文档元素,读到就加载并执行。

(2)defer 属性表示延迟执行引入的 JavaScript,即这段 JavaScript 加载时 HTML 并未停止解析,这两个过程是并行的。当整个 document 解析完毕后再执行脚本文件,在 DOMContentLoaded 事件触发之前完成。多个脚本按顺序执行。

(3)async 属性表示异步执行引入的 JavaScript,与 defer 的区别在于,如果已经加载好,就会开始执行,也就是说它的执行仍然会阻塞文档的解析,只是它的加载过程不会阻塞。多个脚本的执行顺序无法保证。

《defer 和 async 的区别》


http://lihuaxi.xjx100.cn/news/1703952.html

相关文章

商业智能的利用:打造成功的业务战略之道

在当今快节奏和数据驱动的商业环境中,制定稳健的商业战略对于实现可持续的增长和保持竞争力至关重要。商业智能(BI)是能够显著提高业务战略有效性的关键因素之一。本文将深入探讨商业智能的定义、其在战略制定中的重要性,以及如何…

PHP写用户注册、登录和密码重置功能

目录 连接数据库: 用户注册功能: 用户登录功能: 密码重置功能: 首先,创建一个名为users的数据库表,包含以下字段: id:用户ID,自增主键username:用户名,唯一…

Alluxio AI 全新产品发布:无缝对接低成本对象存储 AI 训练解决方案

(2023 年 10 月 19 日,北京)Alluxio 作为一家承载各类数据驱动型工作负载的数据平台公司,现推出全新的 Alluxio Enterprise AI 高性能数据平台, 旨在满足人工智能 (AI) 和机器学习 (ML) 负载对于企业数据基础设施不断增长的需求。…

实际项目中最常用的设计模式

在软件开发领域,设计模式是一种经过验证的通用解决方案,用于解决各种常见问题。它们有助于提高代码的可维护性、可扩展性和可重用性。虽然有许多不同的设计模式,但以下是实际项目中最常用的一些: 1. 单例模式 (Singleton Pattern) 单例模式确保一个类只有一个实例,并提供…

curl命令服务器上执行http请求

1. 现在本地使用postman生成curl命令 注意: 将ip改成127.0.0.1,端口是实际服务运行的端口 curl --location --request POST http://127.0.0.1:63040/content/course/list?pageNo1&pageSize2 \ --header Content-Type: application/json \ --data-raw {"courseName&q…

Http 缓存策略,有什么区别,分别解决了什么问题

1)浏览器缓存策略 浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使 用本地缓存;否则,则向服务器发起请求并携带缓存标识。根据是否需向服…

C#接口和继承的区别、联系与使用场景

在C#编程语言中,接口和继承是两个核心的概念。本文将详细介绍接口和继承之间的区别与联系,并探讨它们在实际编程中的使用场景。通过代码示例和详细说明,读者将能够深入理解这两个概念的功能和用法。 目录 引言1. 区别与联系1.1 区别1.2 联系 …

使用 Python 进行卡方测试

土耳其超级联赛的三大足球俱乐部 一、说明 卡方检验用于检验为分类变量创建的模型。也就是说,这是我们在统计学中经常遇到的另一个经典假设检验。该测试是事实与期望的统计版本。我们有一个理论,一个对事件的期望,我们也有观察,现…