汇总各浏览器核心(js引擎及排版引擎)深究

前言

写本篇文章的初衷是追寻各浏览器对css、js实现性能而码,再说了,个人认为要做个负责前端应该要对其底层有所了解,这样在有的时候对bug能迅捷的对症下药。

小熊花了近6个小时搜索相关资料加上本身开发的一些经验总结出本篇。起初开始的小熊只知道IE核心、FF核心、OP核心等(前些年的主流浏览器),而如今风行的Safari(本文简称SF)和Chrome(本文简称GG),都是Webkit的开源核心,虽然代表是Safari,但感觉GG沾上google的光芒似乎在PC端上比SF更流行,咱开始详谈。

(本文偏向历史以及核心更新讲解,相对枯燥,若亲感觉对该类不感兴趣请和谐偶这篇文章)

四大核心

  • IE——Trident核心:
    1. 排版引擎: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结论为小熊检测得出)。
    2. JS引擎:
      • 早期(3~8)JScript
      • 近期(9~10+)Chakra(音译貌似是查克拉 - -,鸣人蛋疼 - -)
    3. 使用该核心的浏览器们:
      • 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)
    4. PS:微软旗下开发的浏览器核心,早期与网景竞争的大头,最后以市场较大和采取一些和谐的手段(不解释,微软大家都懂的 - -)把网景市场硬是给压下去了。
  • FF——Gecko核心:
    1. 排版引擎:Gecko
    2. JS引擎:
      • 早期(1.0~3.0)SpiderMonkey:第一款JS引擎,由Brendan Eich在网景时编写。
      • (3.5~3.6)TraceMonkey:基于即时编译的引擎,其中部份程式码取自Tamarin引擎。
      • (4.0~至今)JagerMonkey:德文Jäger原意为猎人,结合追踪和组合码技术大幅提高效能,部分技术借凿了V8、JavaScriptCore、SquirrelFish。
    3. 使用该核心的浏览器们:
      • 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(需自行安装)
    4. PS: *表示使用Gecko来渲染基于XUL的用户界面。可以说是 Netscape (网景)的继承人,它们的目标是:“木有蛀牙” - -,开玩笑,FF(Mozilla)开发团队的目标是构建于标准100%兼容的浏览器,是小熊最喜欢的浏览器。
  • GG/SF——Webkit核心:
    1. 排版引擎:
      • (早期SF)KHTML引擎
      • (也不知啥时候至今,SF/GG均采用)WebCore引擎,由KHTML引擎衍生成WEBKIT自己构建的排版引擎
    2. JS引擎:
      • (早期SF)KJS引擎
      • (过后一段时间,SF采用)JavaScriptCore引擎
      • (4.0至今,SF)Nitro引擎(原名:SquirrelFish)
      • (GG)V8引擎:小熊认为V8是个好引擎,在JS执行效率上确实很强大。
    3. 使用该核心的浏览器们:
      • Google Chrome
      • Safari
      • 搜狗高速浏览器*
      • 傲游3*
      • QQ浏览器6*
      • 枫树浏览器*
    4. PS:*指(webkit/trident双引擎),Webkit本身早期代言是SF,不过GG的市场看上去比SF大,WEBKIT高呼:开源就是好,漏洞修复快。
  • OP——Presto核心:
    1. 排版引擎:
      • (早期4~6)Elektra引擎 , 再早点的资料(例如3.5)小熊没找到
      • (7+)Presto引擎:由Opera Software开发的浏览器排版引擎
    2. JS引擎:
      • (4.0~6.1)Linear A引擎
      • (7.0~9.2)Linear B引擎
      • (9.5~10.2)Futhark引擎
      • (10.5+)Carakan引擎
    3. 使用该引擎的浏览器们:
      • Opera 7与之后版本
      • Opera Mobile
      • Opera Mini
      • Nintendo DS Browser
      • Nintendo DSi浏览器
      • Nokia 770浏览器
      • Sony Mylo COM-1's浏览器
      • Wii Internet Channel浏览器
    4. 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个核心都融入在一个浏览器下,切换起来几乎是不可能的),相信有的人已经受不了偶的唐僧了,为看到这里的亲们娱乐一下,剩下放出一些内涵图片,哈,差不多就讲到这里。

  1. avatar
    noeasy#37

    不错,最近正打算也整理下关于浏览器原理的文章...heihei...

  2. avatar
    noesay#36

    不错,最近正打算也整理下关于浏览器原理的文章...heihei...

  1. 目前还没有trackbacks.

  2. Trackbacks被禁用了

发表评论 进楼快捷键: ctrl+Enter取消回复

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>