Webkit总体结构与流程
1,体系结构
Webkit主要包括WebCore和JavascriptCore两部分,其中最重要的部分是WebCore,包含了一个客户请求到加载、再到解析、再到渲染的整体过程。JavascriptCore主要负责对Javascript的支持。
图1:Webkit体系结构图
从该图中我们可以看出WebCore主要包含了page、html、editing、loader、dom、bindings、xml、rendering、css、platform等模块。
其中page主要是给客户端提供Page、Frame等浏览器抽象概念的模块。html、dom、xml是与解析相关的模块,dom则是解析模块的核心模块。Loader是负责加载的模块。editing是与编辑功能相关的模块。binding是与其他功能绑定的模块,包括C、JNI、JavascriptCore等。rendering是渲染相关的模块。而platform则是平台相关的东西,如具体的联网实现、绘制等,主要是提供一些接口供具体的平台去实现。
这个与Qt的Webkit源代码中目录结构相对应:
图2:Webkit代码目录结构图
2,主要流程
Webkit中从用户发起一个联网请求到把获得的页面展示给用户的主题流程如下:客户类发起命令(page)——联网获得网页内容(loader)——解析内容(html)——生成DOM树(dom)——(调用Node:attach())生成Render树(rendering)——(调用FramView:layout())排版(css)——渲染(platform)。
流程图如下: