FED

©FrontEndDev.org
2015 - 2024
web@2.23.0 api@2.21.1

我所知道的关于浏览器内核的那些事儿

当我在查阅每个浏览器的发展过程时,我感受到了Mozilla的倔强,IE的恐惧,Opera无可奈何下的不甘心,感受到了Safari在他的家族培养下一定会更加优秀以及Chrome这位技术先锋的美好前景。 balabala………了一大堆,没办法,因为我是妹子,所以就爱关心“邻里之间的杂事”~Piu——切入正题。


浏览器的主要组件有以下几部分:

  • 用户界面 除了用来显示浏览器主窗口之外的浏览器的其他部分,例如书签目录,地址栏,前进后退……。
  • 浏览器引擎 这里说,浏览器引擎是查询及操作渲染引擎的接口。我在网上搜的时候也大都是默认为渲染引擎。
  • 浏览器内核
    • 渲染引擎 用来显示请求的内容,如果请求内容为html,那么负责解析html、及css并将解释后的结果显示出来。还可以解析xml文件。
    • js引擎 用来解释执行js代码。
  • 网络 用来完成网络调用,如http请求。
  • Native UI 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口。
  • 数据存储 属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据。

平常大家讨论最热闹的就是浏览器内核,因为它关乎到我们前端工程师们所设计的界面是否如我们心中的模样展示在各个浏览器中。 虽然现在我们知道的浏览器有很多,除了上篇文章介绍的5大主浏览器,还有许多国产浏览器,例如360,遨游,世界之窗,UC,搜搜……,虽然浏览器厂家很多,但是这些浏览器会各自选择适合自己的开源内核。

我知道的浏览器内核:

Trident

是Windows搭载的网页浏览器即IE的内核。1997年在IE4中使用。

1993年,NCSA将Mosaic的商业运营权转售给了Spyglass公司。 最早的IE1(1994年)版本号为4.40.308,因为当时微软还没有买下Spyglass Mosaic的源码,到了IE2和IE3,微软同时注明了版本2(4.40.516)和版本3(4.70.1158),表明IE即将成为微软专属软件。直到IE4成为微软专属软件。它采用的排版引擎(俗称内核)为Trident。 IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0)

实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用IE内核而非IE的浏览器涌现。此外,为了方便也有很多人直接简称其为IE内核。

猎豹安全浏览器(1.0-4.2版本为Trident+Webkit,4.3版本为Trident+Blink) 360安全浏览器(1.0-5.0为Trident,6.0为Trident+Webkit,7.0为Trident+Blink) 360极速浏览器(7.5之前为Trident+Webkit,7.5为Trident+Blink) 傲游浏览器(傲游1.x、2.x为IE内核,3.x为IE与Webkit双核) 百度浏览器(早期版本) 世界之窗浏览器[2] (最初为IE内核,2013年采用Chrome+IE内核) 2345浏览器、腾讯TT、淘宝浏览器 搜狗高速浏览器(1.x为Trident,2.0及以后版本为Trident+Webkit) 阿云浏览器(早期版本)、瑞星安全浏览器 闪游浏览器、海豚浏览器(iPhone/iPad/Android) UC浏览器(Blink内核+Trident内核)

其中一个内核是Trident,然后再增加一个其他内核。国内的厂商一般把其他内核叫做“高速浏览模式”,而Trident则是“兼容浏览模式”

Gecko

是Netscape6开始采用的内核,后来的Mozilla FireFox也采用了该内核,Gecko的特点是代码完全公开,是个开源内核,因此受到许多人的青睐。

事实上,Gecko引擎的由来跟IE不无关系 前面说过IE没有使用W3C的标准,这导致了微软内部一些开发人员的不满;网景解散后,他们与当时已经停止更新了的Netscape的一些员工一起创办了Mozilla。 以当时的Mosaic内核为基础重新编写内核,于是开发出了Gecko。 补充:JavaScript引擎是SpiderMonkey。 结果,网景6.0(trident 1.0)在2000年11月才被正式发布。

这二者均是在Mosaic内核的基础上重新编写内核。

KHTML及KJS

khtml为排版引擎即渲染引擎,kjs为js引擎。均是由KDE研发。是自由软件,符合GPL(由他为基础开发的软件也为开源软件)。

Webkit

包括webcore排版引擎与JavaScriptCore解析引擎,均是苹果从KDE的KHTML及KJS引擎衍生而来。是苹果公司自己的内核,也是Safari浏览器使用的内核,但是符合GPL条款,所以webkit为开源的,但是Safari浏览器为部分开源,自己公司的某些接口未对外开源。在Chrome 28之前,google使用webkit中webcore与自己的javascript V8引擎。那时也统称为webkit引擎。

Blink

由Google和Opera Software开发的浏览器排版引擎。至于js引擎,想必Chrome依旧使用自己的V8引擎。

在2013年4月,Google计划将这个渲染引擎作为Chromium计划的一部分。这一渲染引擎是开源引擎WebKit中WebCore组件的一个分支。并且在Chrome(28及往后版本)、Opera(15及往后版本)中使用。

此举,谷歌称称将与苹果的开源浏览器核心Webkit分道扬镳。

Presto

是Opera12.10至Opera7中采用的内核,现已停止开发并废弃,由于这是商业引擎(非开源),所以在发展上有了限制。

这篇里面,我有写到,在Opera12.10版本以后使用Blink作为其内核。

Servo。

Mozilla与三星也达成合作协议开发“下一代”浏览器渲染引擎Servo。

结语

未来会是怎样的内核布局,又会有多少优胜劣汰。

我查了这么多资料后,觉得技术开源,不断创新,不要因为一点成就,一时的市场份额,而得意忘形,停止步伐。

人们对产品的体验没有最好,只有更好。