什么是瀏覽器內核
要想搞清楚瀏覽器內核是什么,首先應該搞清楚瀏覽器的構成是怎樣的。簡單來說瀏覽器可以分為兩部分: shell + 內核。其中 shell 的種類相對較多,內核則 較少。shell 是指瀏覽器的外殼:如菜單,工具欄等。主要是提供給用戶界面操作,參數(shù)設置等等;內核則是一些基于標記語言顯示內容的程序或模塊,它負責取得網頁的內容(HTML、XML、圖像等等)、整理訊息(如加入CSS)、計算網頁的顯示方式、然后輸出至顯示終端或打印機并解釋執(zhí)行客戶端腳本。在瀏覽器中,shell 通過調用內核來實現(xiàn)各種功能的。所以內核才是瀏覽器的核心,它的功能如何就決定了瀏覽器的特點和表現(xiàn)如何。瀏覽器的內核的不同對于網頁的語法解釋會有不同,所以渲染的效果也不相同。這就是了解瀏覽器內核對前端開發(fā)人員的意義所在。
瀏覽器內核又可以分成兩部分:JS 引擎和渲染引擎(layout engineer或者Rendering Engine)。所有網頁瀏覽器、電子郵件客戶端以及其它需要編輯、顯示網絡內容的應用程序都需要內核。JS 引擎負責解析并執(zhí)行 Javascript 語言,以此實現(xiàn)網頁的動態(tài)效果;渲染引擎則負責 JS 引擎以外的其它內核功能。最開始渲染引擎和 JS 引擎并沒有很明確的區(qū)分,隨著 JS 引擎越來越獨立,人們所說的
瀏覽器內核就僅指瀏覽器的渲染引擎
了。
瀏覽器內核的分類
瀏覽器內核的種類很多,如加上沒什么人使用的非商業(yè)的免費內核,可能會有10多種,但是常見的瀏覽器內核有以下四種:
1、Trident
2、Gechko
3、Presto
4、Webkit
一、Trident Trident 又稱 MSHTML,是微軟開發(fā)的 IE 瀏覽器內核。它由于被包含在全世界使用率最高的操作系統(tǒng)Windows中,因此擁有極高的市場占有率。這也導致很多其它瀏覽器都使用這個引擎,例如 QQ瀏覽器,Maxthon(最新版已經不使用)、360 和搜狗瀏覽器等。但額外需要知道的是 QQ瀏覽器,Maxthon 和搜狗瀏覽器均是雙核瀏覽器,了解這點對這些平臺上的開發(fā)很有幫助。 由于這種內核比較流行,以前的很多網頁都是根據(jù)它的標準來編寫的。實際上這個內核對網頁標準支持不是很好,甚至在2005年,與網頁標準制定組織(W3C理事會)所制定的標準發(fā)生了脫節(jié)。同時 Trident 內核本身的 BUG 比較多,對一些符合 W3C 標準的網頁代碼支持不是很好。這在早期的 IE 版本中比較明顯,比如IE5.5以前(包括IE5.5)。其實IE6對W3C標準的支持也不是很好,而我們現(xiàn)在仍然有相當一部分人在使用IE6,事實上它也屬于一個比較早的版本。二、 Gechko Gecko 是用 C++ 編寫的開源渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有 Firefox、Netscape 和 Flock 等。這個內核的優(yōu)點就是功能強大、豐富,可以支持很多復雜網頁效果和瀏覽器擴展接口。同時它還是一個跨平臺內核,可以在Windows、 BSD、Linux和Mac OS X中使用。但是代價是也顯而易見的,就是要消耗很多的資源,比如內存。
三、
Presto
Presto 由 Opera Software 公司開始的,用于 Opera 瀏覽器的渲染引擎。Macromedia Dreamweaver (MX版本及以上)和Adobe Creative Suite 2也使用了 Presto 內核。
Presto 是一個動態(tài)內核,頁面的全部或者部分可隨著 DOM 及 Script 語法的事件而重新解析。Presto 內核附帶的 JS 引擎被稱為公認的瀏覽網頁速度最快的,這得益于它在開發(fā)時的天生優(yōu)勢,在處理 JS 腳本等腳本語言時,會比其他的內核快3倍左右。缺點就是為了達到很快的速度而丟掉了一部分網頁兼容性。此外,由于 Presto 是商業(yè)引擎,使用它的除開 Opera,就只剩下 NDSBrowser、Wii Internet Channle、Nokia 770網絡瀏覽器等少數(shù)幾個了,很大程度上限制了 Presto 的發(fā)展。 四、 WebkitWebkit 是一個基于 KHTML(是HTML網頁排版引擎之一,由KDE所開發(fā)) 開發(fā)的開源項目,包含了來自 KDE 項目和蘋果公司的一些組件,以及 Webcore 和 JavaScriptCore(SquirrelFish,V8)兩個引擎,主要用于Mac OS系統(tǒng)。它主要的使用者有 Safari、Chrome。
Webkit 的特點在于源碼結構清晰、渲染速度極快,雖然不及 Presto 但是也勝于 Gecko 和 Trident。缺點是對于網頁代碼的容錯性不高,也就是說對網頁代碼的兼容性較低,會使一些編寫不標準的網頁無法正確顯示。
|
|
來自: 習藝閣 > 《⒐互聯(lián)網絡類》