下图为Webkit的架构图,不同的厂商浏览器有不同的webkit移植(Ports),所以在整个webkit项目中,就存在部分代码是不共享的,例如下图中的蓝色部分,在不同厂商浏览器的webkit中实现就是不一样的,而绿色部分则基本上是一样的,但也可能会有一小部分特性不一样。下面我们就简单介绍一下这些模块。
操作系统:这个比较好理解,WebKit可以运行在不同的操作系统上,例如QTWebkit可以运行在Windows或Linux系统,同一个浏览器使用的Webkit也可以依赖不同的操作系统,例如Chromium浏览器支持Windows、Linux、Android等系统;
第三方库:位于操作系统之上,这些库是WebKit运行的基础,包括图形库、网络库、音视频库等等;
WebCore:该模块是WebKit加载和渲染网页的基础,是不同浏览器所使用的WebKit中共享的部分,包括HTML解析器、CSS解析器、SVG、布局、渲染树等等;
JavaScript引擎:JavaScript解析器,WebKit默认的引擎是JavaScriptCore,Google的Blink替换为自家开发的V8引擎;
WebKit Ports:WebKit中的移植部分,包括网络栈、音视频解码、硬件加速等模块,这部分对WebKit的功能和性能影响比较大。
WebKit嵌入式接口:WebKit对外暴露的接口层,这个接口是提供给浏览器调用的,例如给chromium调用,因为接口与具体的移植也有关系,所以中间会有一个WebKit绑定层;