. WebKit 简介

Webkit 是一个开放源代码的浏览器引擎 (web browser engine) ,最初的代码来自 KDE 的 KHTML 和 KJS( 均开放源代码 ) 。苹果公司在 Webkit 的基础上做了大量优化改进工作 ,此时的 Apple Webkit 已经和 Webkit 有了不少差别,最后开发出了著名的 Safari ,可以说 Safari 是一个相当成功的产品,但是 Safari 却不是开放源代码的。

基于 WebKit 的浏览器产品有:苹果的 Safari 和 iPhone , Google 的 Chrome 和 Android , Nokia 的 S60 ,傲游 3(Maxthon3) ;

WebKit 目前支持 HTML4/5 , CSS1/2 , DOM1/2 , HTTP/FILE , GIF/JPEG/PNG , XML , SVG , RSS2.0 等;

同类的浏览器引擎有: Trident ( IE 内核), Gechko ( Netscape, Mozilla 和 Firefox 内核), Presto ( Opera 内核,不免费), Tasman ( IE for MAC 内核),等等,而 WebKit 因为其功能强大、速度快而且免费备受欢迎。

 用到的库: 
  
除了平台相关的库, WebKit 需要用到的一些主要的后台库有:

  • ICU : International Components for Unicode , 一个成熟,广泛使用的一套为 C / C + + 和 Java 库提供 Unicode 的 全球化支持软件;

  • XSLT : eXtensible Stylesheet Language Transformation, W3C 定义的用于 XML 文档转换的规范;

  • Curl : 一个利用 URL 语法的命令行数据传输工具,基于 libcurl 。

  • Sqlite : SQLite 是实现了 SQL92 标准的 SQL 数据库引擎,它能在一个库里组合数据库引擎和接口 , 将所有数据存储于单个文件 ;

  • Gperf :一个很完美的哈希函数生成器;

  • Flex : Fast Lex, 快速词法分析生成器;

  • Bison :语法分析生成器,可以将一段带注释的上下文无关语法转化成 LALR 或 GLR 语法;

  • Enchant :一个拼写检查库,提供单词的拼写检查、纠错等功能;

 代码目录结构

  • WebKitTools
    一些测试 WebKit 实现功能的程序;

  • WebKitLibraries
    WebKit 用到的库以及系统调用接口定义;

  • WebKitExamplePlugins
    一些来自 Netscape 的插件,比如输入法、动画和 Cocoa 环境等;

  • WebKitSite: 保存了 www.webkit.org 网站的

  • WebKit
    此目录位于 WebKit 的最上层,定义了与应用相关的一些接口,因此它是平台相关的,每个子目录都是对应平台的完整实现:

  • cf : Core Foundation, MAC OS X 上的系统级 C 语言 API 接口;

  • win : Windows ;

  • mac : MAC OS X ;

  • qt : Q Toolkit ,其公司已被 Nokia 收购;

  • gtk : Gimp Toolkit ;

  • scripts :一些脚本,目前只有一个关于 WebKit 版本的脚本程序;

  • chromium : Google Chrome 开发平台;

  • wx : wxWindows ,一种可移植的 C++ 和 Python GUI 工具箱, by Julian Smart ;

  • haiku :一种开源 OS ,从 BeOS 而来, 2001 开始, 2009 发布首版;

  • efl: Enlightenment Foundation Libraries, Enlightenment 平台;
    WebCore 
    WebKit 的核心部分,定义了浏览相关的数据 IO 、页面加载、脚本分析、 UI 组织、事件处理、网络分析、平台相关的具体实现等内容。

  • xml :提供 xml 相关的内容;
  • html :提供 html 相关的内容;其下的 Canvas 目录定义了 3D 画布以及 WebGL 库相关的内容;
  • wml: Wireless Markup Language ;
  • css :提供 css 相关的内容;
  • dom :提供 dom 相关的内容;
  • editing :编辑相关的功能;
  • page :浏览相关内容,并非是我们看到的一个页面,在一次浏览会话中,它只有一个实例;
  • rendering :页面渲染相关的内容,在对页面脚本进行 DOM 树分析之后,需要对这些元素进行渲染和显示;
  • notification :内部模块间的事件通信;
  • history :页面浏览历史记录相关的内容;
  • svg :矢量图形功能,有选项, --svg ;
  • mathml : W3C 为网页中的数学表达式制定的规范;有编译选项, --mathml ;
  • loader : 加载资源及 Cache ;
  • workers :“ Web Workers 为 WEB 前端网页上的脚本提供了一种能在后台进程中运行的方法。一旦它被创建, Web Workers 就可以通过 postMessage() 向任务池发送任务请求,执行完之后再通过 postMessage() 返回消息给创建者指定的事件处理 程序 ( 通过 onmessage 进行捕获 ) 。 
    Web Workers 
    进程能够在不影响用户界面的情况下处理任务,并且,它还可以使用 XMLHttpRequest 来处理 I/O ,无论 responseXML 和 channel 属性是否为 null 。”
  • storage : Web Storage 相关的内容,保存页面的数据,可以看成是 Cookie 的升级;
  • websockets :与网络连接相关的内容;
  • bridge: 主要包含 NPPlugin(Netscape Plugin) 方面的接口访问等内容;
  • binding : Dom 与 JavaScriptCore 绑定的功能;
  • accessibility :提供控件的可用性相关的内容, accessibility 常用来形容对一些特殊人群的功能支持,比如残障者、老人等;
  • icu :里面放了专门为 Mac OS X 10.4 编译的 icu 相关头文件 ;
  • platform :提供了平台相关的具体实现,如事件响应、本地化、网络连接等;
  • plugins :插件相关内容;
  • ForwardingHeaders :头文件;
  • inspector : Inspector 是 WebKit 提供的查看网页源代码, DOM 树,以及调试脚本的工具,本目录包含了实现此功能的内容;
  • Configurations : X Code 环境相关的配置文件;
  • English.lproj :本地化文件;
  • manual-tests :测试用的 html 文件;
  • Resources :资源,图标;
  • WebCore.gyp :工程文件。 GYP ( Generate Youre Project )是 google 自己开发了一个脚本工具,这个工具也 是采用 python 编写的。它采用了自定义的一套规则,用于生成各种工程文件;
  • WebCore.vcproj : VC 工程文件;
  • WebCore.xcodeproj : X Code 工程文件;
  • WTF : Apple 的 C++ 库,可以看作精简的 STL ; SunSpider
  • 一个 JavaScript 的检测程序,它不检测 DOM 或者浏览器其他的 API ,只用来检测 Javascript 。
  • JavaScriptGlue

  • JavaScriptCore :有关 JavaScript 的相关内容,包括了脚本解释器、分析器以及执行程序;

  • PlanetWebkit: 一个比较灵活的 RSS 阅读器; Webkit 网站上的 Planet :一站式的 Webkit 开发与动态信息;

 体系结构

WebKit 主要包括三部分: WebKit , WebCore ,以及 JavaScriptCore ,加上所使用的库,依托的平台,其基本的体系结构 (Architecture) 如下所示:

注意有的模块相对于下面的模块有突出,这是因为此模块与下面几个模块直接相关,比如 WebCore 模块就与JavaScriptCore 、 Libraries 和 Platforms 模块直接相关。

转载: WebKit介绍及总结(一)相关推荐

  1. 移动浏览器的内核WebKit介绍

    Hybrid App是运行在移动操作系统的WebView上面的,我们可以在原生页面中嵌入HTML5网页,WebView就是这个网页的容器.WebView实际上是一种嵌入式的编程接口,WebView调用 ...

  2. 转载:介绍AD另外一种奇葩的多通道复用的方法

    原文链接:http://www.eda365.com/forum.php?_dsign=74fe4957&mod=viewthread&page=1&tid=110710 在设 ...

  3. 转载:简单介绍Python中的try和finally和with方法

    用 Python 做一件很平常的事情: 打开文件, 逐行读入, 最后关掉文件; 进一步的需求是, 这也许是程序中一个可选的功能, 如果有任何问题, 比如文件无法打开, 或是读取出错, 那么在函数内需要 ...

  4. [转载] PGPool介绍和安装经验

    PGPool介绍和安装经验 Pgpool的介绍 一.介绍 是一个工作在PostgreSQL多服务器和PostgreSQL数据库客户端之间的中间件. 二.概念图 三.功能 连接池:pgpool -Ⅱ保存 ...

  5. WebKit介绍及总结(二)

    五 . 调用过程 知道了 WebKit 的大体结构,我们就可以深究下去,看看这个浏览器引擎具体是怎么工作的.首先介绍几个基本且重要的类: Page :打开 page.h 头文件,我们似乎看不到我们概念 ...

  6. 转载 1-EasyNetQ介绍(黄亮翻译) https://www.cnblogs.com/HuangLiang/p/7105659.html

    EasyNetQ 是一个容易使用,坚固的,针对RabbitMQ的 .NET API. 假如你尽可能快的想去安装和运行RabbitMQ,请去看入门指南. EasyNetQ是为了提供一个尽可能简洁的适用与 ...

  7. 转载:介绍几本专业的书籍,一起学习

    介绍几本专业的书籍,一起学习 这里的书涉及到信息检索,自然语言处理,机器学习,模式识别,数据挖掘的方方面面,每一本书都是值得读者深入的阅读,研究和讨论的.因此,我只能就我个人的理解对几本相对熟悉的或者 ...

  8. [转载] 详细介绍Python函数中的默认参数

    参考链接: Python函数中的默认参数 详细介绍Python函数中的默认参数 import datetime as dt def log_time(message, time=None): if t ...

  9. deepmind dnc 是干什么的 下面是转载的介绍文章

    本文首发于微信公众号:新智元. 下载APP 阅读本文更深度报道 1 新智元报道1 作者:闻菲胡祥杰 刘小芹 零夏 [新智元导读]DeepMind昨夜宣布,将其 Nature 论文研究成果.2016 年 ...

  10. (转载)TOMCAT介绍

    tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器.Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一 ...

最新文章

  1. Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020
  2. 面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
  3. js window.open将参数传递到struts中出现的乱码问题解决
  4. 编码引出的问题_FileReader读取GBK格式的文件
  5. TRUNCATE TABLE和PURGE_TABLE的区别
  6. 前端学习(3185):ant-design的button介绍按钮属性
  7. C#将dll打包到程序中
  8. Python 函数3000字使用总结
  9. 90 行代码,15 个元素教你如何实现无限滚动!
  10. 说说VNode节点(Vue.js实现)
  11. linux 以某个用户执行,Linux下以其他用户运行程序
  12. Python 基础语法
  13. 威联通nas怎么更换大硬盘_手把手教你威联通NAS怎么无损转移硬盘数据(TS-453Bmini)...
  14. QListView自定义Item
  15. 富士施乐Fuji Xerox DocuCentre 2003 驱动
  16. python扫描局域网ip_Python实现扫描局域网活动ip
  17. jike1901666
  18. 类动态规划求解较小规模的最大团问题(Python实现)
  19. 2019年大学计算机二级考试报名,南通职业大学2019年秋季计算机二级考试报名通知...
  20. .net世界 最好的东西!! 你拥有几个 ——转贴

热门文章

  1. Quartz集群配置报错 This scheduler instance (XXXX) is still active but was recovered by another instance...
  2. ios 中h5网页跳到第三方后回到项目字体变大
  3. 关于移动MM购买的相关资料
  4. Hadoop 简介 及 安装
  5. WinEdt 9 如何与pdf打开软件(Acrobat)关联
  6. 李沐论文精读系列二:Vision Transformer、MAE、Swin-Transformer
  7. 用计算机绘制函数图像,用计算机绘制函数图像
  8. 删除单向链表的最后一个节点
  9. 计算机专业课顺序,计算机专业课程安排顺序 计算机专业课程安排
  10. 好用的三维绘图软件CREO学习标注尺寸