美文网首页
网页渲染机制

网页渲染机制

作者: losspm | 来源:发表于2017-05-13 01:19 被阅读21次

    浏览器基本结构


    浏览器结构一般包括如下:
    1.用户界面(User Interface):用户所看到的界面,并且与之交互的功能;
    2.浏览器引擎(Browser Engine):负责控制和管理下一级的渲染引擎;
    3.渲染引擎(Rendering Engine):负责用户的请求(比如html和xml,渲染引擎会解析HTML和XML,以及相应的CSS,然后返回解析的内容);
    4.网络(Networking):负责处理网路相关事物,处理http请求等;
    5.UI后端(UI Backend):负责绘制浏览器提示框等浏览器组件,其底层使用的是操作系统的用户接口;
    6.JavaScript解析器(JavaScript Interpreter):用来解析以及执行JavaScript代码;
    7.数据储存(data storage):负责持久存储诸如cookie和缓存等应用数据。

    渲染引擎以及渲染路径


    渲染引擎所做是的将内容展现出来,默认是支持HTML、XML还有图片类型,对于其他诸如PDF等类型的内容则需要安装相应插件,但浏览器的展示工作流程基本是一样的。

    • 首先解析HTML,生成DOM节点树。

    解析文档的时候,是从上至下扫描并且解析文档;DOM树,即文档内所有节点构成的一个树形结构。


    • 其次加载并且解析样式,生成CSSOM(CSS Object Model)

    CSSOM树,与DOM树结构相似,只是另外为每一个节点关联了样式信息。


    • 加载并且执行JavaScript代码

    或许是由于通常会在JavaScript脚本中改变文档DOM结构,于是浏览器以同步方式解析,加载和执行脚本,浏览器在解析文档时,当解析到<script>标签时,会解析其中的脚本(对于外链的JavaScript文件,需要先加载该文件内容,再进行解析),然后立即执行,这整个过程都会阻塞文档解析,直到脚本执行完才会继续解析文档。就是说由于脚本是同步加载和执行的,它会阻塞文档解析,这也解释了为什么现在通常建议将<script>标签放在标签前面,而不是放在<head>标签里。


    • 根据DOM和CSSOM,生成渲染树(Rendering Tree)

    渲染树,代表一个文档的视觉展示,浏览器通过它将文档内容绘制在浏览器窗口,展示给用户,它由按顺序展示在屏幕上的一系列矩形对象组成,这些矩形对象都带有字体,颜色和尺寸,位置等视觉样式属性。对于这些矩对象,FireFox称之为框架(frame),Webkit浏览器称之为渲染对象(render object, renderer),后文统称为渲染对象。


    • 布局,根据生成的渲染树的每一个节点摆放到相应的位置上

    创建渲染树后,下一步就是布局(Layout),或者叫回流(reflow,relayout),这个过程就是通过渲染树中渲染对象的信息,计算出每一个渲染对象的位置和尺寸,将其安置在浏览器窗口的正确位置,而有些时候我们会在文档布局完成后对DOM进行修改,这时候可能需要重新进行布局,也可称其为回流,本质上还是一个布局的过程,每一个渲染对象都有一个布局或者回流方法,实现其布局或回流。
    布局是一个从上到下,从外到内进行的递归过程,从根渲染对象,即对应着HTML文档根元素<html>,然后下一级渲染对象,如对应着<body>元素,如此层层递归,依次计算每一个渲染对象的几何信息(位置和尺寸)。


    • 遍历渲染树的每一个节点,为每一个节点配套相应的样式

    浏览器UI组件将遍历渲染树并调用渲染对象的绘制(paint)方法,将内容展现在屏幕上,也有可能在之后对DOM进行修改,需要重新绘制渲染对象,也就是重绘,绘制和重绘的关系可以参考布局和回流的关系。


    Webkit引擎渲染流程图

    Paste_Image.png

    Gecko引擎渲染流程图

    Paste_Image.png

    相关文章

      网友评论

          本文标题:网页渲染机制

          本文链接:https://www.haomeiwen.com/subject/xeetxxtx.html