要想搞清楚浏览器内核是什么,首先应该搞清楚浏览器的构成是怎样的。简单来说浏览器可以分为两部分: shell + 内核。其中 shell 的种类相对较多,内核则 较少。shell 是指浏览器的外壳:如菜单,工具栏等。主要是提供给用户界面操作,参数设置等等;内核则是一些基于标记语言显示内容的程序或模块,它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(如加入CSS)、计算网页的显示方式、然后输出至显示终端或打印机并解释执行客户端脚本。在浏览器中,shell 通过调用内核来实现各种功能的。所以内核才是浏览器的核心,它的功能如何就决定了浏览器的特点和表现如何。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。这就是了解浏览器内核对前端开发人员的意义所在。
浏览器内核的种类很多,如加上没什么人使用的非商业的免费内核,可能会有10多种,但是常见的浏览器内核有以下四种:
一、Trident
Trident 又称 MSHTML,是微软开发的 IE 浏览器内核。它由于被包含在全世界使用率最高的操作系统Windows中,因此拥有极高的市场占有率。这也导致很多其它浏览器都使用这个引擎,例如 QQ浏览器,Maxthon(最新版已经不使用)、360 和搜狗浏览器等。但额外需要知道的是 QQ浏览器,Maxthon 和搜狗浏览器均是双核浏览器,了解这点对这些平台上的开发很有帮助。
由于这种内核比较流行,以前的很多网页都是根据它的标准来编写的。实际上这个内核对网页标准支持不是很好,甚至在2005年,与网页标准制定组织(W3C理事会)所制定的标准发生了脱节。同时 Trident 内核本身的 BUG 比较多,对一些符合 W3C 标准的网页代码支持不是很好。这在早期的 IE 版本中比较明显,比如IE5.5以前(包括IE5.5)。其实IE6对W3C标准的支持也不是很好,而我们现在仍然有相当一部分人在使用IE6,事实上它也属于一个比较早的版本。二、 Gechko
Gecko 是用 C++ 编写的开源渲染引擎,包括了SpiderMonkey(Rhino)。主要的使用者有 Firefox、Netscape 和 Flock 等。这个内核的优点就是功能强大、丰富,可以支持很多复杂网页效果和浏览器扩展接口。同时它还是一个跨平台内核,可以在Windows、 BSD、Linux和Mac OS X中使用。但是代价是也显而易见的,就是要消耗很多的资源,比如内存。
Presto 是一个动态内核,页面的全部或者部分可随着 DOM 及 Script 语法的事件而重新解析。Presto 内核附带的 JS 引擎被称为公认的浏览网页速度最快的,这得益于它在开发时的天生优势,在处理 JS 脚本等脚本语言时,会比其他的内核快3倍左右。缺点就是为了达到很快的速度而丢掉了一部分网页兼容性。此外,由于 Presto 是商业引擎,使用它的除开 Opera,就只剩下 NDSBrowser、Wii Internet Channle、Nokia 770网络浏览器等少数几个了,很大程度上限制了 Presto 的发展。
四、 Webkit
Webkit 是一个基于 KHTML(是HTML网页排版引擎之一,由KDE所开发) 开发的开源项目,包含了来自 KDE 项目和苹果公司的一些组件,以及 Webcore 和 JavaScriptCore(SquirrelFish,V8)两个引擎,主要用于Mac OS系统。它主要的使用者有 Safari、Chrome。