对一些开发者而言,WebKit就是一个黑盒子。丢进去HTML、CSS、JS等一连串的东西,而WebKit就能变魔术一般显示出一个很棒的网页出来。实际上,正我的同事IlyaGroriks提到的: 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.
WebKit ports介绍· Safari o Safari的OS X版本和Windows版本是两个不同的移植版本。 o WebKitnightly是基于Safari的Mac OS版本的。稍后详述…… · Mobile Safari o 是专属维护的分支,但随后就成了主流版本。 o Chrome on iOS(使用的是Apple提供的 WebView,随后会说明它们的不同部分) · Chrome (Chromium) o Chrome onAndroid (直接使用Chromiumport) o Yandex Browser, 360 Browser, Sogou Browser使用Chromium,还有Opera. · Android Browser o 紧跟WebKit的最新版本。 · 更多的移值版本: Amazon Silk, Dolphin, Blackberry, QtWebKit,WebKitGTK+, EFL port (Tizen), wxWebKit, WebKitWinCE等。
不同port的关注不同。Mac port关于于将浏览器从系统中分离,引入Obj-C和C++的绑定(binding)以方便在应用中使用WebKit渲染引擎。Chromium则纯粹关注于浏览器。QtWebKit则为其跨平台应用提供运行时或渲染引擎。 |