浏览器渲染关键路径

  1. 首先,浏览器会请求html文件,这个html文件可能是从网络上读取的,也可能是从本地磁盘读取的。
    html文件的传递都是2进制的bytes,浏览器引擎的工作就是把这些bytes渲染成你能看到的页面。

  2. 读取到这些bytes文件之后,要将这些bytes文件转换成DOM, 同时检查这份html文件里有没有对应的css,js文件,如果有的话立马发出http请求。


    image.png

    image.png

    注: 首屏渲染中,此时页面一片空白

  3. 当请求完css文件之后,浏览器引擎开始构建CSSOM(类似上面构建DOM的过程)

image.png
  1. 当CSSOM 和DOM都生成好后,两者结合起来构建Render Tree


    image.png

    本来,CSSOM和DOM是独立的两个东西,但是两者会相互影响,比如,一个元素的CSSOM中display为none,则浏览器会把该元素从render tree中删除


    image.png

    注: 首屏渲染中,此时页面一片空白
  2. 当Render Tree好了以后,下一步就是通过一系列复杂的数学运算计算出每个元素的位置和宽高,这个过程叫layout


    image.png
  3. 当layout的绘制好后,可是paint这些元素啦,此时终于能看到首屏内容啦。

如果html中有JS,会怎么样呢?
不管在何时,当浏览器碰到<script>标签时,都会停止DOM的构建,直至js执行完毕。
这是因为js可能会改变DOM,所以碰到script标签时,会停止构建DOM。

  1. JS不仅会改变DOM,还有可能改变CSSOM

    image.png

    如果在CSSOM还没构建好之前,就碰到了script标签,会怎么样呢?
    js将停止执行,直到CSSOM渲染好
    No CSSOM, no JS execution.

  2. async
    该标签告诉浏览器引擎不必停止当前的DOM构建,这段js将在download之后再执行。

参考文献: https://blog.logrocket.com/how-browser-rendering-works-behind-the-scenes-6782b0e8fb10

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容