更新時間:2022-04-29 來源:黑馬程序員 瀏覽量:
面對市面上眾多的瀏覽器,開發(fā)人員如何掌控程序的兼容性呢?實際上,許多瀏覽器都使用了相同的內(nèi)核,了解其內(nèi)核就能對瀏覽器有一個清晰的歸類。瀏覽器內(nèi)核分成兩部分:排版引擎和JavaScript引擎。排版引擎負責將取得的網(wǎng)頁內(nèi)容(如HTML、CSS等)進行解析和處理,然后顯示到屏幕中。JavaScript引擎用于解析JavaScript語言,通過執(zhí)行代碼來實現(xiàn)網(wǎng)頁的交互效果。下面分別介紹一些常見的排版引擎和JavaScript引擎。
1.排版引擎
( 1) Trident
Trident是Intemet Explorer(IE)瀏覽器使用的引擎。Trident在Windows 操作系統(tǒng)中被設(shè)計為一個功能模塊,使得其他軟件的開發(fā)人員可以便捷地將網(wǎng)頁瀏覽功能加入到其開發(fā)的應(yīng)用程序里。
國內(nèi)很多的雙松”覽器提供了“兼容模式”,該模式便是使用了Trident引擎。其代表軟件有遨游、世界之窗、QQ瀏覽器、獵豹安全瀏覽器、360安全瀏覽器、360極速瀏覽器等。
(2) EdgeHTML
微軟公司在Windows 10操作系統(tǒng)中提供了一個新的瀏覽器Microsoft Edge,其最顯著的特點是使用了新引擎EdgeHTML。EdgeHTML在速度方面有了極大的提升,在Trident基礎(chǔ)上刪除了過時的舊技術(shù)支持代碼,增加了許多對現(xiàn)代瀏覽器的技術(shù)支持。
(3) Gecko
Gecko是Mozilla FireFox(火狐瀏覽器)使用的引擎,其特點是源代碼完全公開,可開發(fā)程度很高,全世界的程序員都可以為其編寫代碼、增加功能。Gecko原本是由網(wǎng)景公司開發(fā)的,現(xiàn)在由Mozilla基金會維護。Gecko是跨平臺的,支持在Windows、Linux和macOS等操作系統(tǒng)上運行。
(4)WebKit
WebKit是一個開放源代碼的瀏覽器引擎,其所包含的WebCore排版引擎和JavaScriptCore引擎來自于KDE項目組的KHTML和KJS。蘋果公司采用了KHTML作為開發(fā)Safari
瀏覽器的引擎后,衍生出了WebKit引擎,并按照開源協(xié)議開放了
WebKit的源代碼。WebKit具有高效穩(wěn)定、兼容性好、源碼結(jié)構(gòu)清晰、易于維護的特點。Google Chrome 瀏覽器也普經(jīng)使用過WebKit引擎。
(5)Blink
Blink 是一個由Google 公司和Opera Software ASA 開發(fā)的瀏覽器排版引擎,Google公司將這個引擎作為開源瀏覽器Chromium項目的一部分。Blink是WebKit中 WebCore組件的一個分支,并且在Chrome(28及后續(xù)版本)、Opera(15及后續(xù)版本)等瀏覽器中使用。目前國內(nèi)大部分瀏覽器都采用了WebKit或Blink內(nèi)核,一些雙核瀏覽器將其作為“急速模式”的內(nèi)核。在移動設(shè)備中,iPhone和iPad等蘋果iOS平臺使用Webkit內(nèi)核;Android 4.4之前的Android系統(tǒng)瀏覽器內(nèi)核是Webkit,在Android 4.4系統(tǒng)中更改為Blink。
2.JavaScript引擎
(1)Chakra
Chakra是微軟公司在E9~11、Microsoft Edge等瀏覽器中使用的JavaScript 引擎。目前,該引擎的核心部分已經(jīng)開源,其開源版本稱為ChakraCore COn。
(2) SpiderMonkey
SpiderMonkey是Mozilla項目中的一個JavaScript引擎,主要用于Firefox瀏覽器。其后又發(fā)布了TraceMonkey、JaegerMonkey、lonMonkey、OdinMonkey等改進版引擎,提高了性能。
(3)Rhino
Rhino是Mozilla項目中的一個使用Java語言編寫的JavaScript引擎,它被作為Java SE6上的默認JavaScript引擎,主要用于為Java執(zhí)行環(huán)境提供JavaScript的支持。
( 4 ) JavaScriptCore
JavaScriptCore 是蘋果在 Safari 瀏覽器使用的JavaScript 引擎。
(5)V8
V8是Google為Chrome瀏覽器開發(fā)的JavaScript引擎,具有較快的執(zhí)行速度。V8非常受歡迎,其他一些軟件也整合了V8引擎,如Node.js。