《WebKit 技术内幕》学习之三(1): WebKit 架构和模块

66 篇文章 0 订阅
48 篇文章 1 订阅

第三章 WebKit 架构和模块


1.Webkit 构架和模块
1.1 获取WebKit

        WebKit是一个开源项目,获取地址为:www.webkit.org,可以通过git或svn方式获得。

1.2 Webkit 架构


        因为不同浏览器的需求,在Webkit中,一些代码是可以共享的,但是另一部分是不同的,这些不同的部分称为Webkit的移植(Ports)

        虚线部分代表该模块在不同浏览器使用的 WebKit 内核中的实现是不一样的(不是普遍共享),实线框标记的模块表示基本上是共享的。

        从上图可以看出,这个WebKit内核,划分为三个层次。

(1)操作系统层:WebKit可以在不同操作系统上工作,如Windows、Mac OS、Linux、Android等。

(2)第三方库,是WebKit'运行的基础,包括:图形库、网络库、视频库等,并且随着浏览器的功能越来越强,性能要求越来越高,新的技术不断的被引入浏览器和Web平台,这也大大的增加了浏览器的复杂性。

(3)最上面的webkit部分就是webkit的项目了,这部分粗略划分成两层,每一层都包含很多模块,这里不能一一细细介绍,后面会在其他博客专题细化介绍。
        WebCore部分包含了被各个浏览器所使用的 Webkit 共享部分,这些都是加载和渲染网页的基础部分,他们必不可少,具体包括HTML解释器、CSS解释器、SVG、DOM、渲染树(renderObject, renderLayer),以及Inspector(调试器)。
        JavaScriptCore 引擎是 Webkit 中默认的 Javascript 引擎。在Webkit中,对 Javascript 的调用是独立于引擎的。在 Google 的 Chrominum 中,它被替换成 V8 引擎。
        Webkit Ports 指的是 Webkit 中非共享部分,对于不同浏览器使用的 Webkit 来说,移植中的这些模块由于平台差异、依赖的第三方库和需求不同等方面原因,往往按照自己的方式来设计和实现,这就产生了移植部分,这是导致众多 Webkit 版本的行为并非一致的重要原因。这其中包括硬件加速构架、网络栈、视频解码、图片解码等。
        嵌入式编程接口是提供给浏览器调用的。因为接口与具体的移植有关,所以有一个与浏览器相关的绑定层(可能不同的平台调用的同一个功能的 webkit 的接口不一样)。绑定层上面就是 Webkit 项目对外暴露的接口层。

        图中没有展现出来的是一些测试用例,包括布局测试用例(Layout Tests)、性能测试用例(Performance Tests),包含了大量的测试用例和期望结果,并且在不同系统移植测试中,共享了大量的测试用例,为了保证代码的质量,这些用例被用来验证渲染结果的正确性。每个浏览器所用的webkit必须保证能够编译出来一个可执行程序,称为DumpRenderTree,它被用来运行测试用例并将渲染结果同期望结果对比。
1.3 Webkit 源码目录

        Webkit共有500万行代码。规模庞大,只能通过清晰的目录结构,来了解功能模块。

      从上面图上可以看出:

(1)一级目录中:重要的目录有四个:LayoutTests、PerformanceTests、Source和Tools。最重要的目录是Source。

  (2)二级目录:重要的目录包括 JavaScriptCore、Platform、WebCore、Webkit、Webkit2和WTF。

        JavaScriptCore 是 Webkit 渲染引擎的默认 Javascript 引擎。

        Platform 本来是 Chrominum 接口代码目录之一,现已被移除。

        WebCore 就是前面图中 WebCore 对应的相关代码。

        Webkit 和 Webkit2 是绑定和嵌入式接口层。

        WTF是一个基础类库,有点像C++的STL库,其中包括字符串操作、各种容器、智能指针、线程、算法等。

        (3)三级目录,重要的三级目录,主要是指属于二级目录WebCore和Webkit2,在WebCore中,如CSS解释器、DOM、HTML解释器、资源加载,Web Inspector等。在WebKit2主要包含两种类型的目录,第一类是各个进程的代码,如Web进程、UI进程、网络进程、插件进程和它们的共享代码等。第二类就是各个移植的一个简单的主函数(main)入口,拥有构建一个基于WebKit2的接口最简单的可执行程序。

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jyl_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值