彙總各瀏覽器核心(js引擎及排版引擎)深究

前言


寫本篇文章的初衷是追尋各瀏覽器對css、js實現性能而碼,再說了,個人認爲要做個負責前端應該要對其底層有所瞭解,這樣在有的時候對bug能迅捷的對症下藥。


小熊花了近6個小時搜索相關資料加上本身開發的一些經驗總結出本篇。起初開始的小熊只知道IE核心、FF核心、OP核心等(前些年的主流瀏覽器),而如今風行的Safari(本文簡稱SF)和Chrome(本文簡稱GG),都是Webkit的開源核心,雖然代表是Safari,但感覺GG沾上google的光芒似乎在PC端上比SF更流行,咱開始詳談。


(本文偏向歷史以及核心更新講解,相對枯燥,若親感覺對該類不感興趣請和諧偶這篇文章)

四大核心


IE——Trident核心:

 排版引擎:Trident

   IE6:對盒模型以及DTD的更新(儘管這麼更新了,咱還是覺得很多方面不行,是時候淘汰了啊 -    -)。

   IE7:咱最無奈的png32 alpha通道在這一代是修復了,其實主要是png32半透明通道的問題,IE6只能扛PNG8的全透明通道(IE6除非濾鏡),其次是部分排版的問題(出名的float問題,還有多了一隻豬和height歸屬是否應該找父層麻煩等哈哈。)

   IE8:CSS3部分僞類跟上了(:after :before,多見著名的clearfix手段)。

   IE9:HTML5、大批CSS3跟上進度了。

   IE10:條件編譯廢除,filter廢除(相當開心,對於filter hack不用愁了)css3漸變跟上(IE10結論爲小熊檢測得出)。

 JS引擎:

   早期(3~8)JScript

   近期(9~10+)Chakra(音譯貌似是查克拉 - -,鳴人蛋疼 - -)

   使用該核心的瀏覽器們:

      Avant Browser(前身爲IeOpera)

      Maxthon(前身爲MyIE3.2、MyIE2)

      GreenBrowser(前身亦爲MyIE3.2)

      TouchNet Browser

      騰訊TT

      GOSURF

      世界之窗(TheWorld Browser)

      MiniIE

      Sleipnir

      MyIE(新版4.x爲GreenBrowser作者發佈,3.2及之前版本爲Maxthon、GreenBrowser、            iTreeSurf等瀏覽器的前身)

      iTreeSurf(LovelyTree,前身亦爲MyIE3.2)

  PS:微軟旗下開發的瀏覽器核心,早期與網景競爭的大頭,最後以市場較大和採取一些和諧的手段(不解釋,微軟大家都懂的 - -)把網景市場硬是給壓下去了。


FireFox——Gecko核心:

  排版引擎:Gecko

  JS引擎:

    早期(1.0~3.0)SpiderMonkey:第一款JS引擎,由Brendan Eich在網景時編寫。

    (3.5~3.6)TraceMonkey:基於即時編譯的引擎,其中部份程式碼取自Tamarin引擎。

    (4.0~至今)JagerMonkey:德文J?ger原意爲獵人,結合追蹤和組合碼技術大幅提高效能,部分       技術借鑿了V8、JavaScriptCore、SquirrelFish。

  使用該核心的瀏覽器們:

     Mozilla Application Suite *

     Mozilla Firefox *

     AOL for Mac OS X

     Aphrodite *

     Beonex Communicator *

     Camino

    CompuServe 7.0

    DocZilla

    Epiphany(2.28起改用WebKit)

    Galeon

    IBM Web Browser

    K-Meleon

    Kazehakase

    Lunascape

    ManyOne *

    Maxthon

    Minimo

    Netscape 6.0和以上 *

    Salamander

    SeaMonkey *

    Skipstone

    Flock *(3.0起改用WebKit)

    Sleipnir(需自行安裝)

    PS: *表示使用Gecko來渲染基於XUL的用戶界面。可以說是 Netscape (網景)的繼承人,它們的目標是:“木有蛀牙” - -,開玩笑,FF(Mozilla)開發團隊的目標是構建於標準100%兼容的瀏覽器,是小熊最喜歡的瀏覽器。


GG/SF——Webkit核心:

  排版引擎:

    (早期SF)KHTML引擎

    (也不知啥時候至今,SF/GG均採用)WebCore引擎,由KHTML引擎衍生成WEBKIT自己構建的排版       引擎

 JS引擎:

    (早期SF)KJS引擎

    (過後一段時間,SF採用)JavaScriptCore引擎

    (4.0至今,SF)Nitro引擎(原名:SquirrelFish)

    (GG)V8引擎:小熊認爲V8是個好引擎,在JS執行效率上確實很強大。

 使用該核心的瀏覽器們:

    Google Chrome

    Safari

    搜狗高速瀏覽器*

    傲遊3*

    QQ瀏覽器6*

    楓樹瀏覽器*

    PS:*指(webkit/trident雙引擎),Webkit本身早期代言是SF,不過GG的市場看上去比SF大,      WEBKIT高呼:開源就是好,漏洞修復快。


OPera——Presto核心:

   排版引擎:

    (早期4~6)Elektra引擎 , 再早點的資料(例如3.5)小熊沒找到

    (7+)Presto引擎:由Opera Software開發的瀏覽器排版引擎

   JS引擎:

    (4.0~6.1)Linear A引擎

    (7.0~9.2)Linear B引擎

    (9.5~10.2)Futhark引擎

    (10.5+)Carakan引擎

   使用該引擎的瀏覽器們:

    Opera 7與之後版本

    Opera Mobile

    Opera Mini

    Nintendo DS Browser

    Nintendo DSi瀏覽器

    Nokia 770瀏覽器

    Sony Mylo COM-1's瀏覽器

    Wii Internet Channel瀏覽器

    PS:大老牌了 - -,一直存在,不過國人很少會用,偶經常在翻國外一些老插件(兼容IE5.5的        那些時間兒),能看到Cross Browser IE5.5 FF1.0 Opera7的時代 - -,歷史相當悠久,另         外,DW MX至CS3版本的核心也是Presto,CS4之後改爲使用Webkit核心。


排版引擎注意點

   排版引擎不是直接就是css引擎了,裏面包含了dtd模式規則和css引擎等,一個相當經典的問題,在html4的時候a標記內不應該包含塊級元素,所以排版引擎還要根據自己的嵌套規則(跟dtd相關)來進行排版,對於支持html5的瀏覽器而言,對結構的探討有了重大變化,例如a標記可以嵌套塊級元素等,這裏放一個有點歷史但還挺標準的結構嵌套規則圖(至少 cross 現在的所有瀏覽器):

  大部分殼瀏覽器(偶也學耗子這麼說了)根據吾國天朝人的操作習慣及網銀問題,基本都使用Trident核心,而過後推出的雙核瀏覽器並不存在啥優勢,只是簡單的將開源的Webkit核心與Trident核心融入到一個瀏覽器上(據一個開發瀏覽器的朋友說,一個殼瀏覽器裝兩個核心基本不存在太大難度,要將上面所述的4個核心都融入在一個瀏覽器下,切換起來幾乎是不可能的),相信有的人已經受不了偶的唐僧了,爲看到這裏的親們娛樂一下,剩下放出一些內涵圖片,哈,差不多就講到這裏。


原文地址:http://jser.in/%e6%b1%87%e6%80%bb%e5%90%84%e6%b5%8f%e8%a7%88%e5%99%a8%e6%a0%b8%e5%bf%83js%e5%bc%95%e6%93%8e%e5%8f%8a%e6%8e%92%e7%89%88%e5%bc%95%e6%93%8e%e6%b7%b1%e7%a9%b6-295.shtml

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