JS CSS 如何阻塞页面渲染

原文地址:https://waynegong.cn/posts/49203.html

TLDR:

CSS 和 JS 都会阻塞页面的 关键渲染路径 ,不同情况下阻塞效果不同:

  • 内联 JS 的执行会阻塞 DOM 构建(Layout);
  • 外部 JS 的加载和执行都会阻塞 DOM 构建;
  • 内联 CSS 的 CSSOM 构建会阻塞渲染树的构建,从而阻塞布局(Layout);
  • 外部 CSS 的加载和 CSSOM 构建都会阻塞渲染树的构建,从而阻塞布局;
  • 在页面存在 CSS 和 JS 的情况下,CSSOM 的构建会阻塞他后面 JS 的执行;
  • script 标签的 asyncderfer 属性能使 JS 的加载不阻塞 DOM 构建;

测试 Demo

为了验证关键渲染路径是如何被阻塞,可以运行一个 Web Server,并通过浏览器调试工具(Chrome DevTools – Performance)观察页面渲染过程。

一个简单的 Demo

JS 如何阻塞页面渲染

由于 JS 可能会修改 DOM,所以运行 JS 和构建 DOM 不能同时进行,所以 JS 会对页面渲染造成较大的影响。

验证 Js 对页面渲染的影响主要分为三种情况:

  1. 内联方式的 JS
  2. 外部链接引入的 JS
  3. 外部链接并使用 async、defer 属性的 JS

内联 JS 对页面渲染的影响

修改 Demo 代码 demo/static/index.html:

<html>
<body>
  <h1>hello</h1>
  <script>
    const stopTime = Date.now() + 20
    while (Date.now() < stopTime);
  </script>
  <br>
  <h1>world</h1>
</body>
</html>

得到如下结果:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端开发中,CSSJS都是基本语法的重要组成部分。 CSS(层叠样式表)是一种用于描述网页上元素样式的语言。它使用选择器来选择要应用样式的元素,并使用属性来定义这些元素的外观。CSS的基本语法包括选择器和属性值的组合。例如,使用选择器来选择元素,然后在大括号内使用属性和属性值来定义元素的样式。例如,可以使用以下语法来设置一个元素的背景颜色: ``` selector { property: value; } ``` JSJavaScript)是一种用于为网页添加交互性和动态功能的编程语言。它可以用于处理用户输入、操作DOM元素、发送网络请求等。JS的基本语法包括变量声明、条件语句、循环语句和函数定义等。例如,可以使用以下语法来声明一个变量并给它赋值: ``` var variableName = value; ``` 除了基本语法,CSSJS还有许多高级特性和用法,可以根据具体需求进行学习和应用。 引用\[1\]提到了HTML的顺序执行特点,这意味着HTML文档会按照从上到下的顺序进行解析和执行。引用\[2\]提到了CSS页面渲染JS执行的阻塞情况,CSS阻塞页面渲染JS的执行,但不会阻塞外部脚本的加载。引用\[3\]提到了HTML的解析过程,包括将HTML转化为DOM树的过程。 综上所述,前端开发中的CSSJS都有自己的基本语法和特点,可以根据需要进行学习和应用。 #### 引用[.reference_title] - *1* *2* *3* [前端性能优化 cssjs的加载与执行](https://blog.csdn.net/weixin_30765637/article/details/119401192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值