聊一聊瀏覽器的內容

瀏覽器段子

今天翻讀平時工作做的便籤時,注意到了一張瀏覽器內核相關的記錄,盡毫無印象,於是寫下這篇文章:

瀏覽器組成

瀏覽器簡單的說由兩部分組成:shell + 內核Shell的含義,簡單地說,就是提供給用戶操作,以便調用內核去實現各種功能的窗口,例如菜單欄、工具欄等等。內核纔是瀏覽器的核心和最重要的。內核是基於標記語言顯示內容的程序或模塊,所以一般也稱內核爲“渲染引擎”(Rendering Engine)。也有一些瀏覽器並不區分外殼和內核。從Mozilla將Gecko獨立出來後,纔有了外殼和內核的明確劃分。目前主流的瀏覽器有IE6、IE8、Mozilla、FireFox、Opera、Safari、Chrome、Netscape等。

瀏覽器內核(渲染引擎)

所謂總要發生點什麼印象纔會深刻。街上看到一個美女,如果僅僅是擦肩而過,可能一個小時之後就會忘記這件事。但如果發生點什麼,加了微信,那就完全不一樣了,也許她就成爲你的知(lao)己(po)了。

常見的瀏覽器內核有多個,不同內核對網頁編寫語法也不同,進而導致同一個頁面在不同內核的瀏覽器下顯示出來的效果也會有所出入(前端開發中深惡痛絕的兼容性問題的根本)。下面一起了解下內核的進化過程:

Trident:

該內核程序在1997年的IE4中首次被採用,是微軟在Mosaic代碼的基礎之上修改而來的,並沿用到IE11,也被普遍稱作”IE內核”。因爲它成熟的接口設計,湧現出了一大批非IE卻採用了該內核的瀏覽器。一家獨大,毫無競爭的舒服日子,並藉着windows系統的東風,IE有相當長的一段時間沒有去更新該內核。導致了兩個後果——一是跟W3C標準的脫節;二是Trident內核的大量 Bug等安全性問題沒有得到及時解決,然後加上一些致力於開源的開發者和一些學者們公開自己認爲IE瀏覽器不安全的觀點,也有很多用戶轉向了其他瀏覽器,FirefoxOpera就是這個時候興起的。

常見Trident內核瀏覽器有:IE、 360安全瀏覽器、獵豹瀏覽器,360極速瀏覽器、傲遊瀏覽器、搜狗高速瀏覽器、UC瀏覽器等。部分是雙核瀏覽器,有一個是Trident,增加一個其他內核。於是瀏覽器有“兼容模式”和“標準模式”,用戶可以隨意切換。

Gecko:

Netscape6開始採用的內核,後來的Mozilla FireFox(火狐瀏覽器) 也採用了該內核,Gecko的特點是代碼完全公開,因此,其可開發程度很高,全世界的程序員都可以爲其編寫代碼,增加功能。因爲這是個開源內核,因此受到許多人的青睞,Gecko內核的瀏覽器也很多,這也是Gecko內核雖然年輕但市場佔有率能夠迅速提高的重要原因。

事實上,Gecko引擎的由來跟IE不無關係,前面說過IE沒有使用W3C的標準,這導致了微軟內部一些開發人員的不滿;他們與當時已經停止更新了的 Netscape的一些員工一起創辦了Mozilla,以當時的Mosaic內核爲基礎重新編寫內核,於是開發出了Gecko。不過事實上,Gecko 內核的瀏覽器仍然還是Firefox (火狐) 用戶最多,所以有時也會被稱爲Firefox內核。此外Gecko也是一個跨平臺內核,可以在Windows、Linux和Mac OS X中使用。

Gecko內核常見的瀏覽器:Mozilla Firefox

Presto:

Opera12.17及更早版本曾經採用的內核,現已停止開發並廢棄,該內核在2003年的Opera7中首次被使用,該款引擎的特點就是渲染速度的優化達到了極致,然而代價是犧牲了網頁的兼容性

實際上這是一個動態內核,與前面幾個內核的最大的區別就在腳本處理上,Presto有着天生的優勢,頁面的全部或者部分都能夠在迴應腳本事件時等情況下被重新解析。此外該內核在執行Javascrīpt的時候有着最快的速度,根據在同等條件下的測試,Presto內核執行同等Javascrīpt所需的時間僅有Trident和Gecko內核的約1/3(Trident內核最慢,不過兩者相差沒有多大)。只可惜Presto是商業引擎,使用Presto的除開Opera以外,只剩下NDSBrowser、Wii Internet Channle、Nokia 770網絡瀏覽器等,這很大程度上限制了Presto的發展。Opera現已改用Google Chrome的Blink內核。

Webkit:

Webkit是蘋果公司自己的內核,也是蘋果的Safari瀏覽器使用的內核。 Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來,它們都是自由軟件,在GPL條約下授權,同時支持BSD系統的開發。所以Webkit也是自由軟件,同時開放源代碼。在安全方面不受IE、Firefox的制約,所以Safari瀏覽器在國內還是很安全的。

Google Chrome、360極速瀏覽器以及搜狗高速瀏覽器高速模式也使用Webkit作爲內核(在腳本理解方面,Chrome使用自己研發的V8引擎)。WebKit 內核在手機上的應用也十分廣泛,例如 Google 的手機 Gphone、 Apple 的iPhone, Nokia’s Series 60 browser 等所使用的 Browser 內核引擎,都是基於 WebKit。

WebKit內核常見的瀏覽器:傲遊瀏覽器3、Safari (Win/Mac/iPhone/iPad)、Android 默認瀏覽器

一個由Google和Opera Software開發的瀏覽器排版引擎,Google計劃將這個渲染引擎作爲Chromium計劃(Chromium瀏覽器是谷歌爲發展自家的瀏覽器Chrome而開啓的計劃,所以Chromium相當於Chrome的工程版或稱實驗版)的一部分,並且在2013年4月的時候公佈了這一消息。這一渲染引擎是開源引擎WebKit中WebCore組件的一個分支,並且在Chrome(28+)、Opera(15+)中使用。

JS引擎

JavaScript最初由網景公司的Brendan Eich設計,是一種動態、弱類型、基於原型的語言,內置支持類。以它爲基礎,制定了ECMAScript標準。JavaScript在瀏覽器的實現中還必須含有DOM和BOM。Web瀏覽器一般使用公共 API來創建主機對象來負責將DOM對象反射進JavaScript。

下面看看ES5和ES6在各大主流瀏覽器上的支持情況:
ES5兼容情況

注:上圖詳細地分析了瀏覽器的JS引擎以及對ES5語法的支持情況。圖太大了,可能看不清楚。看不清楚的童鞋點擊瀏覽器兼容ES5明細

ES6兼容情況
ES6的情況比較複雜,想了解的童鞋同樣點擊瀏覽器兼容ES6明細

主流瀏覽器默認樣式

說完了JS,那麼更讓人咬牙切齒的來了——CSS兼容性。具體各大瀏覽器對自己默認樣式的設置參考各主流瀏覽器標籤默認樣式,熟悉這個以後遇到樣式兼容性問題都直接秒殺啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章