技术开发 频道

Web开发者应该了解的WebKit基础知识

        【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。

0
相关文章