瀏覽器內(nèi)核大揭秘

1 評論 28160 瀏覽 16 收藏 8 分鐘

增哥解讀:這是一篇神奇的文章,你可以了解瀏覽器內(nèi)核,同時(shí)可以感受Mozilla的倔強(qiáng),IE的恐懼,Opera無可奈何下的不甘心,感受到了Safari在他的家族培養(yǎng)下一定會更加優(yōu)秀以及Chrome這位技術(shù)先鋒的美好前景。

當(dāng)我在查閱每個(gè)瀏覽器的發(fā)展過程時(shí),我感受到了Mozilla的倔強(qiáng),IE的恐懼,Opera無可奈何下的不甘心,感受到了Safari在他的家族培養(yǎng)下一定會更加優(yōu)秀以及Chrome這位技術(shù)先鋒的美好前景。balabala………了一大堆,沒辦法,因?yàn)槲沂敲米樱跃蛺坳P(guān)心“鄰里之間的雜事”~Piu——切入正題。

瀏覽器的主要組件有以下幾部分:

用戶界面

除了用來顯示瀏覽器主窗口之外的瀏覽器的其他部分,例如書簽?zāi)夸?,地址欄,前進(jìn)后退……。

瀏覽器引擎

這里說,瀏覽器引擎是查詢及操作渲染引擎的接口。我在網(wǎng)上搜的時(shí)候也大都是默認(rèn)為渲染引擎。

渲染引擎

用來顯示請求的內(nèi)容,如果請求內(nèi)容為html,那么負(fù)責(zé)解析html、及css并將解釋后的結(jié)果顯示出來。還可以解析xml文件。

js引擎

用來解釋執(zhí)行js代碼。

網(wǎng)絡(luò)

用來完成網(wǎng)絡(luò)調(diào)用,如http請求。

Native UI

用來繪制類似組合選擇框及對話框等基本組件,具有不特定于某個(gè)平臺的通用接口,底層使用操作系統(tǒng)的用戶接口。

數(shù)據(jù)存儲

屬于持久層,瀏覽器需要在硬盤中保存類似cookie的各種數(shù)據(jù)。

平常大家討論最熱鬧的就是瀏覽器內(nèi)核,因?yàn)樗P(guān)乎到我們前端工程師們所設(shè)計(jì)的界面是否如我們心中的模樣展示在各個(gè)瀏覽器中。

雖然現(xiàn)在我們知道的瀏覽器有很多,除了上篇文章介紹的5大主瀏覽器,還有許多國產(chǎn)瀏覽器,例如360,遨游,世界之窗,UC,搜搜……,雖然瀏覽器廠家很多,但是這些瀏覽器會各自選擇適合自己的開源內(nèi)核。

我知道的瀏覽器內(nèi)核:

Trident

是Windows搭載的網(wǎng)頁瀏覽器即IE的內(nèi)核。1997年在IE4中使用。

1993年,NCSA將Mosaic的商業(yè)運(yùn)營權(quán)轉(zhuǎn)售給了Spyglass公司。
最早的IE1(1994年)版本號為4.40.308,因?yàn)楫?dāng)時(shí)微軟還沒有買下Spyglass Mosaic的源碼,到了IE2和IE3,微軟同時(shí)注明了版本2(4.40.516)和版本3(4.70.1158),表明IE即將成為微軟專屬軟件。直到IE4成為微軟專屬軟件。它采用的排版引擎(俗稱內(nèi)核)為Trident。
IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0)

實(shí)際上是一款開放的內(nèi)核,其接口內(nèi)核設(shè)計(jì)的相當(dāng)成熟,因此才有許多采用IE內(nèi)核而非IE的瀏覽器涌現(xiàn)。此外,為了方便也有很多人直接簡稱其為IE內(nèi)核。

獵豹安全瀏覽器(1.0-4.2版本為Trident+Webkit,4.3版本為Trident+Blink)
360安全瀏覽器(1.0-5.0為Trident,6.0為Trident+Webkit,7.0為Trident+Blink)
360極速瀏覽器(7.5之前為Trident+Webkit,7.5為Trident+Blink)
傲游瀏覽器(傲游1.x、2.x為IE內(nèi)核,3.x為IE與Webkit雙核)
百度瀏覽器(早期版本)
世界之窗瀏覽器[2] (最初為IE內(nèi)核,2013年采用Chrome+IE內(nèi)核)
2345瀏覽器、騰訊TT、淘寶瀏覽器
搜狗高速瀏覽器(1.x為Trident,2.0及以后版本為Trident+Webkit)
阿云瀏覽器(早期版本)、瑞星安全瀏覽器
閃游瀏覽器、海豚瀏覽器(iPhone/iPad/Android)
UC瀏覽器(Blink內(nèi)核+Trident內(nèi)核)

其中一個(gè)內(nèi)核是Trident,然后再增加一個(gè)其他內(nèi)核。國內(nèi)的廠商一般把其他內(nèi)核叫做“高速瀏覽模式”,而Trident則是“兼容瀏覽模式”

Gecko
是Netscape6開始采用的內(nèi)核,后來的Mozilla FireFox也采用了該內(nèi)核,Gecko的特點(diǎn)是代碼完全公開,是個(gè)開源內(nèi)核,因此受到許多人的青睞。

事實(shí)上,Gecko引擎的由來跟IE不無關(guān)系
前面說過IE沒有使用W3C的標(biāo)準(zhǔn),這導(dǎo)致了微軟內(nèi)部一些開發(fā)人員的不滿;網(wǎng)景解散后,他們與當(dāng)時(shí)已經(jīng)停止更新了的Netscape的一些員工一起創(chuàng)辦了Mozilla。
以當(dāng)時(shí)的Mosaic內(nèi)核為基礎(chǔ)重新編寫內(nèi)核,于是開發(fā)出了Gecko。
補(bǔ)充:JavaScript引擎是SpiderMonkey。
結(jié)果,網(wǎng)景6.0(trident 1.0)在2000年11月才被正式發(fā)布。

這二者均是在Mosaic內(nèi)核的基礎(chǔ)上重新編寫內(nèi)核。

KHTML及KJS

khtml為排版引擎即渲染引擎,kjs為js引擎。均是由KDE研發(fā)。是自由軟件,符合GPL(由他為基礎(chǔ)開發(fā)的軟件也為開源軟件)。

Webkit

包括webcore排版引擎與JavaScriptCore解析引擎,均是蘋果從KDE的KHTML及KJS引擎衍生而來。是蘋果公司自己的內(nèi)核,也是Safari瀏覽器使用的內(nèi)核,但是符合GPL條款,所以webkit為開源的,但是Safari瀏覽器為部分開源,自己公司的某些接口未對外開源。在Chrome 28之前,google使用webkit中webcore與自己的javascript V8引擎。那時(shí)也統(tǒng)稱為webkit引擎。

Blink

由Google和Opera Software開發(fā)的瀏覽器排版引擎。至于js引擎,想必Chrome依舊使用自己的V8引擎。

在2013年4月,Google計(jì)劃將這個(gè)渲染引擎作為Chromium計(jì)劃的一部分。這一渲染引擎是開源引擎WebKit中WebCore組件的一個(gè)分支。并且在Chrome(28及往后版本)、Opera(15及往后版本)中使用。此舉,谷歌稱稱將與蘋果的開源瀏覽器核心Webkit分道揚(yáng)鑣。

Presto

是Opera12.10至Opera7中采用的內(nèi)核,現(xiàn)已停止開發(fā)并廢棄,由于這是商業(yè)引擎(非開源),所以在發(fā)展上有了限制。這篇里面,我有寫到,在Opera12.10版本以后使用Blink作為其內(nèi)核。

Mozilla與三星也達(dá)成合作協(xié)議開發(fā)“下一代”瀏覽器渲染引擎Servo。
未來會是怎樣的內(nèi)核布局,又會有多少優(yōu)勝劣汰。
我查了這么多資料后,覺得技術(shù)開源,不斷創(chuàng)新,不要因?yàn)橐稽c(diǎn)成就,一時(shí)的市場份額,而得意忘形,停止步伐。

人們對產(chǎn)品的體驗(yàn)沒有最好,只有更好。

原文作者:Miss—Du ; 轉(zhuǎn)載自:簡書

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. nice~!!

    來自山西 回復(fù)