CSS和JS加载对HTML解析有什么影响

@import和link标签有什么区别

在解释文章开头这个问题之前,我们先来了解一下@import和link标签有什么区别。

  1. @import只能加载CSS文件,而link标签除了加载CSS文件,还可以加载其他脚本文件,比如JS脚本文件。
  2. link标签加载文件和页面加息是同时进行的,而@import加载CSS文件却是要等页面解析完才会加载。

CSS文件和JS脚本对DOM解析的影响

  1. CSS文件加载不会阻塞DOM解析,但是会阻塞DOM渲染

    这里解释一下为什么CSS文件要阻塞DOM渲染不阻塞DOM解析:如果CSS不阻塞DOM渲染,那么当DOM解析完后会立即渲染出一个页面样式,当CSS加载完后,页面就会重新渲染成CSS样式,如此就造成用户体验差,渲染次数增加而导致开销大。

  2. JS脚本加载会阻塞DOM解析,但浏览器会”偷看“DOM,预先下载相关资源

    同样的,也解释一下为什么JS文件要阻塞DOM解析:如果不阻塞,浏览器先解析后面的DOM,当加载完JS后,JS脚本里的内容会删后面的DOM,那么先前的解析就是无用功,所以JS文件会阻塞解析。
    但是在实际开发中,我们本不想加载JS脚本的时阻塞DOM解析,因为这会使得用户体验差。那么有没有解决方法呢?
    首先是在script标签中加入async属性或者defer属性,也就是异步加载或者延迟

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值