【IT168 评论】对一些开发者而言,WebKit就是一个黑盒子。丢进去HTML、CSS、JS等一连串的东西,而WebKit就能变魔术一般显示出一个很棒的网页出来。实际上,正我的同事IlyaGroriks提到的:
WebKit不但是白盒,而且是一个开放的白盒。
让我们花点时间来理解以下这些问题:
• 什么是WebKit?
• 什么不是WebKit?
• 浏览器是如何使用WebKit的?
• 为什么WebKit分支各不相同?
最近连Opera都转到WebKit平台上。下面的内容可以让你能够识别浏览器间的差异,去到合适的tracker上报Bug, 同时可以了解如何更有效的在各个浏览器上开发。
标准的浏览器组件
以下是现代浏览器的一些组件:
• 解析(Parsing) (HTML, XML, CSS, JavaScript)
• 排版(Layout)
• 渲染(Text and graphics rendering)
• 图片解码(Image decoding)
• 图形加速(GPU interaction)
• 网络访问(Network access)
• 硬件加速(Hardware acceleration)
只有前两项是被所有WebKit浏览器所共享的。其它的部分由不同的WebKit ports来实现。什么意思?
WebKit的移植版本(Ports)
现在有很多WebKit的移植版本,先看一下WebKit hacker(也是Sencha的Director)Ariya Hidayat的解释:
WebKit最为公认的参考是Apple自己运行在Mac OS X上的分支,也是最初和原装的WebKit库。在Mac OS X上不,围绕着CoreFundation等不同的原生系统库实现出了不同的接口。比如让WebKit之所以知道如何绘制出一个带有圆角的flat button,其实最终是由CoreGraphics负责的。
在Mac移值版本上使用的是CoreGraphics(CG),Mac上的Chrome则使用的是Skia。
WebKit不断地被移植到不同的平台上,包括桌面版本和Mobile版本,它们通常被称为一从此WebKit port。Apple自己也基于CoreFoundation库的Windows版本移植了一份Windows版本的WebKit。
不过Windows版的Safari已经死去。
除此之外,还有许多其它的ports (完整列表)。Google创建并维护着Chromium port。还有基于Gtk+的WebKitGtk。Nokia (实际上是Trolltech)维护着Qt port,就是知名的QtWebKitmodule。