日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Webkit內(nèi)核探究【1】——Webkit簡(jiǎn)介

 My鏡像站 2011-12-26

注:【轉(zhuǎn)載請(qǐng)注明文章來源、保持原樣】

出處:http://www.cnblogs.com/jyli/archive/2010/01/31/1660355.html
作者:李嘉昱

研究Webkit內(nèi)核已經(jīng)有一段時(shí)間了,在這期間我花了很多時(shí)間去研讀webkit代碼,并在網(wǎng)上查閱了不少的資料。在這之后,我開始嘗試對(duì)Webkit內(nèi)核進(jìn)行剪裁,以便得到自己所需的部分。

俗語有言,“獨(dú)學(xué)而無友 則孤陋而寡聞”,遂本著交流的態(tài)度拿出來與大家分享之,順便回顧一下自己這段時(shí)間以來走過的路。到目前,本人雖不能說是精 通Webkit內(nèi)核 ,但也總算是在Webkit內(nèi)核中游歷過了一番,并獲得了不少Webkit內(nèi)核代碼的直接經(jīng)驗(yàn)。

在此,我將以Webkit內(nèi)核代碼為基礎(chǔ),詳細(xì)介紹Webkit內(nèi)核的組成以及其各個(gè)模塊的功能和實(shí)現(xiàn)。文章寫到哪算哪,有了新的認(rèn)識(shí)也會(huì)更新,補(bǔ)充。

 

什么是Webkit


Wekbit是一個(gè)開源的Web瀏覽器引擎,也就是瀏覽器的內(nèi)核。Apple的Safari, Google的Chrome, Nokia S60平臺(tái)的默認(rèn)瀏覽器,Apple手機(jī)的默認(rèn)瀏覽器,Android手機(jī)的默認(rèn)瀏覽器均采用的Webkit作為器瀏覽器內(nèi)核。Webkit的采用程度由 此可見一斑,理所當(dāng)然的成為了當(dāng)今主流的三大瀏覽器內(nèi)核之一。另外兩個(gè)分別是Gecko和Trident,大名鼎鼎的Firefox便是使用的Gecko 內(nèi)核,而微軟的IE系列則使用的是Trident內(nèi)核。雖然目前市場(chǎng)上IE內(nèi)核瀏覽器仍然占據(jù)大多數(shù)市場(chǎng)份額,但其他內(nèi)核瀏覽器也大有后來居上之勢(shì)。其 中,Webkit作為一款優(yōu)秀的瀏覽器內(nèi)核,它眾多優(yōu)秀的特性引起業(yè)內(nèi)的的廣泛關(guān)注。尤其是近來,google的加入更是讓W(xué)ebkit有所升溫,從 Goole Chrome瀏覽器, Goole Anroid手機(jī)操作系統(tǒng)內(nèi)置瀏覽器均采用Webkit作為內(nèi)核, 近來推出的Chrome OS更是讓人期待。從實(shí)現(xiàn)角度來講,據(jù)說其比Gecko代碼更為整潔清晰,我目前還沒研究過Gecko的代碼,所以還無從比較。

 

Wekbit做了什么?


作為瀏覽器的內(nèi)核,Webkit做了哪些工作?為了了解這些,先讓我們來看下一個(gè)Web瀏覽器究竟做了什么。我們可以從輸入輸出的角度來看一個(gè) Web瀏覽器為我們做了哪些工作。先看一個(gè)簡(jiǎn)單的例子,Web瀏覽器的輸入是一個(gè)HTML文檔,輸出則是一個(gè)我們用眼睛所看到的一個(gè)Web頁(yè)面, 就普通用戶而言它的輸入和輸出就是這么簡(jiǎn)單,如下圖所示。

那么Webkit的輸入和輸出又是什么呢?如果能明白這個(gè),那我們就能很清楚的知道Webkit到底是做什么的了。不過現(xiàn)在要說清楚這個(gè)還有點(diǎn)困 難,因?yàn)閃ebkit的輸出就要復(fù)雜些了,因?yàn)樗妮敵霰緛砭头侵苯用嫦蛴脩?,現(xiàn)在簡(jiǎn)單點(diǎn)來說,Webkit的輸入是web 文檔,輸出是一些看不見的模型,瀏覽器上層借助于這些模型來繪制出我們所看到的實(shí)際頁(yè)面。后面適當(dāng)?shù)臅r(shí)候會(huì)更具體的探討這些模型。

 

Wekbit組成


Webkit實(shí)際上包含三大部分,至少?gòu)拇a結(jié)構(gòu)上來說是這樣的,當(dāng)然,如果細(xì)分的話還能夠劃分出更多的模塊。如下圖所示

 

其中,WebCore是Webkit的核心部分,它實(shí)現(xiàn)了對(duì)文檔的模型化,包括了CSS, DOM, Render等的實(shí)現(xiàn), JavaSript Core顯然是對(duì)JavaSript支持的實(shí)現(xiàn)。而橘黃色標(biāo)注的Webkit部分包含了很多不同平臺(tái)對(duì)Webkit封裝的實(shí)現(xiàn),即抽象出了與瀏覽器所能直 接對(duì)應(yīng)的一些概念的實(shí)現(xiàn),如,WebView,WebPage, WebFrame等。這三部分共同構(gòu)成了Webkit, 在源碼中,它們分別對(duì)應(yīng)這個(gè)這三個(gè)目錄, 即Webkit三大部分為WebCore, JavaSript Core,Webkit。

 

應(yīng)用程序如何利用Webkit的


從下圖可以看出,利用Webkit的應(yīng)用程序的位置處于Webkit模塊之上,應(yīng)用程序并不直接和WebCore以及JavaScript Core來打交道,也不需要和它們打交道,而是同我前面提到過的Webkit模塊來交互,從而屏蔽了WebCore和JavaSript Core部分。Webkit模塊實(shí)際上抽象出了大多數(shù)應(yīng)用程序所需要的那一部分,這里所說的大多數(shù)應(yīng)用程序其實(shí)就是指的瀏覽器, 對(duì)于實(shí)現(xiàn)一個(gè)瀏覽器而言,Webkit模塊所提供的接口已經(jīng)足夠。不過對(duì)于某些應(yīng)用,可能得對(duì)其實(shí)施一定的改造,但是話又說回來,Webkit本來就是被 設(shè)計(jì)成為Browser的內(nèi)核而被實(shí)現(xiàn)的。

看到這里,也就是說如果我們要想利用Webkit來實(shí)現(xiàn)一個(gè)功能完善Browser或其他類瀏覽器應(yīng)用程序的話,你只需要了解Webkit模塊部分 就足夠了,更確切的說只需要了解它所提供的接口就夠了。事實(shí)上,大多數(shù)平臺(tái),如果采用了Webkit內(nèi)核作為瀏覽器內(nèi)核組件的話,所提供的對(duì)應(yīng)文檔部分都 是關(guān)于Webkit模塊所提供的接口的描述。很多平臺(tái)都提供了Browser組件,其使用方法就像是其他可視組件一樣,在應(yīng)用程序中應(yīng)用起來非常方便。比 如,某平臺(tái)提供了叫做WebView的可視化組件,我們就可以通過如下幾行代碼來展示一個(gè)網(wǎng)頁(yè), 使用的代碼僅僅三行。

WebView *view = new WebView();

view->load(Url("http://www.google.cn"));

view->show();

以Webkit作為瀏覽器組件的平臺(tái)有不少,包括Symbian S60, Android, Qt, GTK等等,前不久看到消息,好像Black Berry也準(zhǔn)備在自家的手機(jī)上使用Webkit了。

 

待續(xù)....

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多