webkit

 

webkit研究报告pdf,比较好的资料

 

 

 

good documentaion

 

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/DisplayWebContent/DisplayWebContent.html

 

http://www.cocoadev.com/index.pl?WebKit

 

 

 

WebKit结构和流程分析

 

1. 体系 结构

WebKit上层组织应用

WebCore

¨Page与外框相关的内容(Frame,Page,History,Focus,Window)

¨Loader加载资源及Cache

¨HTML-DOM HTML内容及解析

¨DOM- DOM CORE内容

¨XML- XML内容及解析

¨Render-排版功能

¨CSS-DOM CSS内容

¨Binding-DOM与JavascriptCore绑定的功能

¨Editing-所有与编辑相关的功能

JavascriptCore-javascript引擎

¨API-基本javascript功能

¨Binding与其它功能绑定的功能,如:DOM,C,JNI

¨DerviedSource自动产生的代码

¨ForwordHeads头文件,无实际意义

¨PCRE-Perl-Compatible Regular Expressions 

¨KJS-Javascript Kernel

¨WTF-KDE的C++模板库

Unicode unicode 库

Tools tools库

CURL-url 客户端传输库

PlatForm- 与平台相关的功能,如图形图像,字体,Unicode, IO,输入法等.

 

 

2. 解析流程

1.    CURL获得网站的stream

2.    解析划分字符串

3.    通过Dom Builder按合法的html规范生成Dom树

4.    如果有javascript,JSEngine就通过ECMA-262标准完善Dom树

5.    把Dom传给LayoutEngine,进行布局,如果有CSS样式,就通过CSSParser解析。

6.    最后Rendering out出来

 

WebKit 结构

简要的说, WebKit 由三个模块组成: JavaScriptCore WebCore WebKit WebKit 作为了整个项目的名称。

JavaScriptCore :是 JavaScript 解释器;

WebCore :是整个项目的核心,用来实现 render 引擎:解析 Web 页面,生成一个 DOM 树和一个 render 树,并最终 render it with a backend (后端?),当前已经有很多移植的 Backend ,如 WebKit/GTK WebKitQT 等。在上图中, backend WebCore 中分离出来了,但实际上它是 WebCore 的一部分。

WebKit :它隐藏并选择 WebCore 到当前平台。在 WebKit/Gtk 中, WebCore Gtk objects 的形式出现,并且它们的 signals API 类似其他的 Gtk objects.

WebKit 工程组织与管理

平台与工具

当前 WebKit 支持四种平台: GTK QT Mac OS X 、和 Cygwin

GTK QT 使用 qmake

Mac OS X 使用 xcodebuild

Cygwin 则使用 Visual Studio

下面主要针对 Qt 版的 WebKit 作分析介绍:

首先,执行 WebKitTools/Scripts 下的 build-webkit Perl 脚本,可以使用一些参数配置需要的功能模块,主要有 SVG 的一些功能配置,以及 XPATH XSLT VIDEO 等。脚本执行过程中会对相应的参数进行解析,确定编译选项、功能模块、平台信息以及相应的工具、输出路径等等参数,最后根据不同的参数,使用 qmake 工具由 webkit.pro 生成整个工程的 makefile 。在 make 的过程中会进一步调用 qmake 由各个子模块的 .pro 项目文件生成各模块的 makefile 。最后 make 各个子模块的 makefile 就可以得到需要的目标文件。

工程结构

这个 project 可以分成 JavaScriptCore WebCore WebKit 三个子模块,对应到三个子目录,具体的如上面 WebKit 结构介绍的。

       更进一步,整个 project 又分成了六个可构建出来的子 project ,对应到相应的 .pro 文件。

WebKit/WebCore/WebCore.pro :生成 libQtWebKit.so libQtWebKit.a ,是整个 WebKit 引擎库, WebKit 应用都是基于这个库。

WebKit/JavaScriptCore/kjs/testkjs.pro :生成 testkjs 可执行文件,它是一个 JavaScript 的测试工具,测试 JavaScriptCore 模块的功能实现。

WebKit/JavaScriptCore/pcre/dftables.pro :生成 dftables 可执行文件,也是一个工具。

WebKit/WebKit/qt/QtLauncher/QtLauncher.pro :生成 QtLauncher 可执行文件,它是基于 WebKit 的一个简单浏览器的应用。

WebKit/WebKit/qt/Plugins/plugins.pro :生成了 libqtwebico.so install 后会放到 /usr/lib/qt4/plugins/imageformats/ 下,这个库的作用还不明了,因为目前运行的 QtLauncher 应用没有用到它,有待研究。

WebKit/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro :生成 DumpRenderTree 工具,也是基于 WebKit 的一个应用工具。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值