“约见”面试官系列之常见面试题之第四十八篇之各个浏览器内核(建议收藏)
一.簡單,明了,概括的介紹一下:?
主流瀏覽器 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?瀏覽器內核
IE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? trident
Chrome ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?webkit/blink
firefox ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Gecko
Opera ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?presto
Safari ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?webkit
二.詳細的介紹一下:
?1.Trident--Internet Explorer:
IE瀏覽器用的就是Trident內核,又稱其為IE內核。1994年微軟開始使用它,是在Mosaic代碼的基礎之上修改而來的,并沿用到目前的IE8。Trident實際上是一款開放的內核,其接口內核設計的相當成熟,因此才有許多采用IE內核而非IE的瀏覽器涌現(如 Maxthon、The World 、TT、GreenBrowser、AvantBrowser等)。此外,為了方便也有很多人直接簡稱其為IE內核(當然也不排除有部分人是因為不知道內 核名稱而只好如此說)。
國內很多的雙核瀏覽器的其中一核便是 Trident,美其名曰 “兼容模式”,如QQ瀏覽器,使用雙核瀏覽器時,可以自動/手動切換內核來瀏覽網頁。Window10 發布后,IE 將其內置瀏覽器命名為 Edge,Edge 最顯著的特點就是新內核 EdgeHTML。關于 Edge 瀏覽器更多可以參考 如何評價 Microsoft Edge 瀏覽器?
使用Trident渲染引擎的瀏覽器包括:IE、傲游、世界之窗瀏覽器、Avant、騰訊TT、Netscape 8、NetCaptor、Sleipnir、GOSURF、GreenBrowser和KKman等。
2.Gecko-FireFox
Gecko是Netscape6 開始采用的內核,后來的 Mozilla FireFox(火狐瀏覽器) 也采用了該內核,Gecko 的特點是代碼完全公開,因此,其可開發程度很高,全世界的程序員都可以為其編寫代碼,增加功能。因為這是個開源內核,因此受到許多人的青睞,Gecko 內核的瀏覽器也很多,這也是 Gecko 內核雖然年輕但市場占有率能夠迅速提高的重要原因。
事實上,Gecko 引擎的由來跟 IE 不無關系,前面說過 IE 沒有使用 W3C 的標準,這導致了微軟內部一些開發人員的不滿;他們與當時已經停止更新了的 Netscape 的一些員工一起創辦了 Mozilla,以當時的 Mosaic 內核為基礎重新編寫內核,于是開發出了 Gecko。不過事實上,Gecko 內核的瀏覽器仍然還是 Firefox (火狐) 用戶最多,所以有時也會被稱為 Firefox 內核。此外 Gecko 也是一個跨平臺內核,可以在Windows、 BSD、Linux 和 Mac OS X 中使用。Gecko是最流行的排版引擎之一,僅次于Trident。
Mozilla?Firefox是一個開源網頁瀏覽器,原名是Firebird,2004年2月9日,Mozilla?Firebird決定改稱Mozilla?Firefox。Firefox瀏覽器使用的是Gecko內核,其發展歷程如下:
1997年,網景收購了DigitalStyle。當時,網景瀏覽器在各方面的表現已經比不上她的主要競爭對手Internet?Explorer。網景開始研發下一代的排版引擎,并期望把新的排版引擎應用于下一版本的網景瀏覽器上。?
1998年初,Mozilla計劃開始執行。這個新的排版引擎名為Raptor,以開發源碼的方式發放于互聯網上。后來,因為商標問題,Raptor改名為NGLayout(即next?generation?layout之意)。而最后NGLayout就被網景重新命名為Gecko。?
2003年7月15日時代華納解散了網景公司,大部分開發者被解雇。Mozilla基金會亦在當天成立,繼續推動著Gecko的發展。時至今天,Gecko仍繼續由Mozilla的雇員和義工所維護和發展。?
代表瀏覽器:Netscape,Mazilla Firefox;
3.Presto-Opera
Presto 是挪威產瀏覽器 opera 的 “前任” 內核,為何說是 “前任”,因為最新的 opera 瀏覽器早已將之拋棄從而投入到了谷歌大本營。
Opera 的一個里程碑作品是 Opera7.0,因為它使用了 Opera Software 自主開發的 Presto 渲染引擎,取代了舊版 Opera 4 至 6 版本使用的 Elektra 排版引擎。該款引擎的特點就是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性。
Presto 加入了動態功能,例如網頁或其部分可隨著 DOM 及 Script 語法的事件而重新排版。Presto 在推出后不斷有更新版本推出,使不少錯誤得以修正,以及閱讀 Javascript 效能得以最佳化,并成為當時速度最快的引擎。
然而為了減少研發成本,Opera 在 2013 年 2 月宣布放棄 Presto,轉而跟隨 Chrome 使用 WebKit 分支的 Chromium 引擎作為自家瀏覽器核心引擎,Presto 內核的 Opera 瀏覽器版本永遠的停留在了 12.17。在 Chrome 于 2013 年推出 Blink 引擎之后,Opera 也緊跟其腳步表示將轉而使用 Blink 作為瀏覽器核心引擎。
Presto 與開源的 WebKit 和經過谷歌加持的 Chromium 系列相比毫無推廣上的優勢,這是 Opera 轉投 WebKit 的主要原因,并且使用 WebKit 內核的 Opera 瀏覽器可以兼容谷歌 Chrome 瀏覽器海量的插件資源。但是換內核的代價對于 Opera 來說過于慘痛。使用谷歌的 WebKit 內核之后,原本快速,輕量化,穩定的 Opera 瀏覽器變得異常的卡頓,而且表現不穩定,Opera 原本舊內核瀏覽器書簽同步到新內核上的工作 Opera 花了整整兩年時間,期間很多 Opera 的用戶紛紛轉投谷歌瀏覽器和其他瀏覽器,造成了眾多的用戶流失。時至今日現在還有上千萬人在使用老版本的 Opera。
很多人都認為 Opera 瀏覽器終止在了 12.17,此后所更新的 Opera 版本號不再是原來那個 Opera。
說好的 Presto Forever 呢?
代表瀏覽器:Opera,NDSBrowser,Wii Internet Channle,Nokia 770;
4.Webkit-chrome
一提到 webkit,首先想到的便是 chrome,可以說,chrome 將 Webkit內核 深入人心,殊不知,Webkit 的鼻祖其實是 Safari。現在很多人錯誤地把 webkit 叫做 chrome內核(即使 chrome內核已經是 blink 了),蘋果都哭瞎了有木有。
Safari 是蘋果公司開發的瀏覽器,使用了KDE(Linux桌面系統)的 KHTML 作為瀏覽器的內核,Safari 所用瀏覽器內核的名稱是大名鼎鼎的 WebKit。 Safari 在 2003 年 1 月 7 日首度發行測試版,并成為 Mac OS X v10.3 與之后版本的默認瀏覽器,也成為蘋果其它系列產品的指定瀏覽器(也已支持 Windows 平臺)。
如上述可知,WebKit 前身是 KDE 小組的 KHTML 引擎,可以說 WebKit 是 KHTML 的一個開源的分支。當年蘋果在比較了 Gecko 和 KHTML 后,選擇了后者來做引擎開發,是因為 KHTML 擁有清晰的源碼結構和極快的渲染速度。
Webkit內核 可以說是以硬件盈利為主的蘋果公司給軟件行業的最大貢獻之一。隨后,2008 年谷歌公司發布 chrome 瀏覽器,采用的 chromium 內核便 fork 了 Webkit
Chromium/Bink
2008 年,谷歌公司發布了 chrome 瀏覽器,瀏覽器使用的內核被命名為 chromium。
chromium fork 自開源引擎 webkit,卻把 WebKit 的代碼梳理得可讀性提高很多,所以以前可能需要一天進行編譯的代碼,現在只要兩個小時就能搞定。因此 Chromium 引擎和其它基于 WebKit 的引擎所渲染頁面的效果也是有出入的。所以有些地方會把 chromium 引擎和 webkit 區分開來單獨介紹,而有的文章把 chromium 歸入 webkit 引擎中,都是有一定道理的。
谷歌公司還研發了自己的 Javascript 引擎,V8,極大地提高了 Javascript 的運算速度。
chromium 問世后,帶動了國產瀏覽器行業的發展。一些基于 chromium 的單核,雙核瀏覽器如雨后春筍般拔地而起,例如 搜狗、360、QQ瀏覽器等等,無一不是套著不同的外殼用著相同的內核。
然而 2013 年 4 月 3 日,谷歌在 Chromium Blog 上發表 博客,稱將與蘋果的開源瀏覽器核心 Webkit 分道揚鑣,在 Chromium 項目中研發 Blink 渲染引擎(即瀏覽器核心),內置于 Chrome 瀏覽器之中。
webkit 用的好好的,為何要投入到一個新的內核中去呢?
Blink 其實是 WebKit 的分支,如同 WebKit 是 KHTML 的分支。Google 的 Chromium 項目此前一直使用 WebKit(WebCore) 作為渲染引擎,但出于某種原因,并沒有將其多進程架構移植入Webkit。
后來,由于蘋果推出的 WebKit2 與 Chromium 的沙箱設計存在沖突,所以 Chromium 一直停留在 WebKit,并使用移植的方式來實現和主線 WebKit2 的對接。這增加了 Chromium 的復雜性,且在一定程度上影響了 Chromium 的架構移植工作。
基于以上原因,Google 決定從 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研發),將在 WebKit 代碼的基礎上研發更加快速和簡約的渲染引擎,并逐步脫離 WebKit 的影響,創造一個完全獨立的 Blink 引擎。這樣以來,唯一一條維系 Google 和蘋果之間技術關系的紐帶就這樣被切斷了。
Google 和蘋果在多個領域都是競爭對手,而唯獨在瀏覽器引擎上有技術合作,利益一致。但為了各自的利益,誰都不會拿出 100% 的 “誠意” 來做好 WebKit,因為你做出來的成果競爭對手可以直接享用。移動互聯網已經崛起,手機和平板設備端必將成為瀏覽器的另一個戰場。這個時候,如果 Google 跟蘋果仍然黏在一起,將會嚴重阻礙雙方的進步,也會阻礙 WebKit 的進步。
Chromium引擎雖然是屬于WebKit的分支,卻把WebKit的代碼梳理得可讀性提高很多,所以以前可能需要一天進行編譯的代碼,現在只要兩個小時就能搞定。因此Chromium引擎和其它基于WebKit的引擎所渲染頁面的效果也是有出入的。基于以上原因,有的地方會把Chromium引擎跟WebKit區分開來,有的地方則直接把Chromium引擎歸為WebKit(比如維基百科),其實都有其道理。
然而在13年發布的Chrome?28.0.1469.0版本開始,Chrome放棄Chromium引擎轉而使用最新的Blink引擎(基于WebKit2——蘋果公司于2010年推出的新的WebKit引擎),Blink對比上一代的引擎精簡了代碼、改善了DOM框架,也提升了安全性。
代表瀏覽器:Safari,Chrome;
本面試題為前端常考面試題,后續有機會繼續完善。我是歌謠,一個沉迷于故事的講述者。
歡迎一起私信交流。
“睡服“面試官系列之各系列目錄匯總(建議學習收藏)?
總結
以上是生活随笔為你收集整理的“约见”面试官系列之常见面试题之第四十八篇之各个浏览器内核(建议收藏)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会计计算机实训目的,会计专业实习的目的是
- 下一篇: 量子力学教材推荐