CSS解析、JS执行与DOM解析、页面渲染的阻塞关系
编辑
              
              13
            
            
          2021-05-22
          在css解析、js执行时与页面阻塞的问题。
本文的CSS和JS指的是外部引入的方式,例如:
<link rel="stylesheet" href="/css/main.css">
<script src="/js/main.js"></script>
结论
具体的原因以及研究过程请参考最后的参考文章,这里只给出结论:
- CSS下载与解析不会阻塞DOM解析
 - CSS下载与解析会阻碍界面的渲染
 - JS下载与执行会阻塞DOM的解析
 - JS下载与执行会阻碍界面的渲染
 - 虽然
script标签会阻碍DOM解析,但是HTML文档中通过额外的script等标签加载的外部资源,浏览器会提前进行下载。 - 如果
script标签脚本准备执行时,还有CSS未下载或者解析完成,则该脚本会等待CSS解析完成后才会继续执行。 script标签可以使用defer和async更改它的执行时机。- 如果
script标签使用了defer,那么该脚本会在DOM解析完成之后,DOMContentLoaded事件之前被执行。 - 如果
script标签使用了async,那么该脚本在下载的过程中DOM解析依然会同步进行,但是该脚本在被下载完成时会立即执行。 - 如果多个
script标签使用了defer,那么这些脚本会依次执行,会保证顺序,而async则无法保证执行顺序。 
如有错误请在评论区指出。
参考文章
- 0
 - 0
 - 
              
              
  
分享