浏览器的渲染原理简介

  看到这个标题大家一定会想到这篇神文《How Browsers Work》,这篇文章把浏览器的很多细节讲得很细,而且也被翻译成了中文。为什么我还想写一篇呢?因为两个原因,

  1)这篇文章太长了,阅读成本太大,不能一口气读完。

  2)花了大力气读了这篇文章后可以了解很多,但似乎对工作没什么帮助。

  所以,我准备写下这篇文章来解决上述两个问题。希望你能在上班途中,或是坐马桶时就能读完,并能从中学会一些能用在工作上的东西。

  浏览器工作大流程

  废话少说,先来看个图:

  从上面这个图中,我们可以看到那么几个事:

  1)浏览器会解析三个东西:

  • 一个是 HTML/SVG/XHTML,事实上,Webkit 有三个 C++ 的类对应这三类文档。解析这三种文件会产生一个 DOM Tree。
  • CSS,解析 CSS 会产生 CSS 规则树。
  • Javascript,脚本,主要是通过 DOM API 和 CSSOM API 来操作 DOM Tree 和 CSS Rule Tree.

  2)解析完成后,浏览器引擎会通过 DOM Tree 和 CSS Rule Tree 来构造 Rendering Tree。注意:

  • Rendering Tree 渲染树并不等同于 DOM 树,因为一些像 Header 或 display:none 的东西就没必要放在渲染树中了。
  • CSS 的 Rule Tree 主要是为了完成匹配并把 CSS Rule 附加上 Rendering Tree 上的每个 Element。也就是 DOM 结点。也就是所谓的 Frame。
  • 然后,计算每个 Frame(也就是每个 Element)的位置,这又叫 layout 和 reflow 过程。

  3)最后通过调用操作系统 Native GUI 的 API 绘制。

  DOM 解析

  HTML 的 DOM Tree 解析如下:

<html><head>  <title>Web page parsing</title></head><body>  <div>  <h1>Web page parsing</h1>  <p>This is an example Web page.</p>  </div></body></html>

it知识库浏览器的渲染原理简介,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。