Bootstrap

WebKit与Blink工作流程以及显示页面

作为一个Render与Layout引擎,他们的工作步骤
1 Parse HTML document,结果是把取到的TAG生成dom的nodes,存到dom tree中,DOM tree就是网页内容的tree。同时, style的数据也是在这里parse的,CSS和in style element。
2 根据css和html里面的显示信息,对dom的node创建render tree. render tree里面的节点对应于dom的node,是一个一个的矩形区域,区域的颜色啊,位置啊之类的信息都有。
3 RenderTree创建之后,就开始layout排版了。每一个要显示的节点的坐标在这个过程中确定了。
4 显示, UI backend layer,就是每个平台具体通过什么方法去画了。我印象中,webkit用skia库,chromium用的是gles?

上面是一个设计流程,是一个递进的过程,但是严格按照上面的流程走,页面显示太慢了,页面还有重定向,额外加载其他资源等等。为了提升用户体验,engine会尽可能快的显示页面上的内容,大不了重新刷新呗。所以,在第一步过程中, HTML还没有完全parse的时候,render tree就会被layout, 然后显示。剩下内容继续同样处理,如果出现style 变换就会重新刷。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;