看到这个标题,你一定会想到这篇神文《How Browsers Work》。这篇文章详细解释了浏览器的很多细节,也已经翻译成中文了。为什么我还想写一个?出于两个原因,这篇文章太长且成本太高,无法一口气读完。花了很多时间看完这篇文章,能学到很多东西,但对我的工作似乎帮助不大。因此,我打算写这篇文章来解决以上两个问题。我希望您可以在上班途中或坐在马桶上时阅读它,并从中学到一些可以应用到您的工作中的东西。浏览器的大工作流程就不废话了,先看一张图:从上图我们可以看出几件事:1)浏览器会解析三样东西:一个是HTML/SVG/XHTML,在事实上,Webkit有三个C++类分别对应这三种类型的文档。解析这三个文件会生成一个DOMTree。CSS,解析CSS会生成一个CSS规则树。Javascript,脚本,主要是通过DOMAPI和CSSOMAPI来操作DOMTree和CSSRuleTree。2)解析完成后,浏览器引擎会通过DOMTree和CSSRuleTree构建RenderingTree。注意:RenderingTree并不等同于DOM树,因为像Header或者display:none这样的东西不一定放在渲染树中。CSS的RuleTree主要是完成匹配,将CSSRule附加到RenderingTree上的每个Element上。那就是DOM节点。这就是所谓的框架。然后,计算出每个Frame(也就是每个Element)的位置,也称为layout和reflow过程。3)最后调用操作系统NativeGUI的API进行绘制。DOM解析HTML的DOM树解析如下:ThisisanexampleWebpage.<
