天天看點

WebKit

一 . 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 :project檔案。

    GYP ( Generate Youre Project )是 google 自己開發了一個腳本工具。這個工具也 是採用 python 編寫的。

    它採用了自己定義的一套規則,用于生成各種project檔案。

  • WebCore.vcproj : VC project檔案;
  • WebCore.xcodeproj : X Code project檔案;
  • WTF : Apple 的 C++ 庫。能夠看作精簡的 STL 。 SunSpider
  • 一個 JavaScript 的檢測程式,它不檢測 DOM 或者浏覽器其它的 API 。僅僅用來檢測 Javascript 。
  • JavaScriptGlue
  • JavaScriptCore :有關 JavaScript 的相關内容。包含了腳本解釋器、分析器以及運作程式。
  • PlanetWebkit: 一個比較靈活的 RSS 閱讀器。 Webkit 站點上的 Planet :一站式的 Webkit 開發與動态資訊;

四 . 體系結構

WebKit 主要包含三部分: WebKit , WebCore 。以及 JavaScriptCore ,加上所使用的庫,依托的平台。其主要的體系結構 (Architecture) 例如以下所看到的: