发现作为一个未来前端工程师,今天被问到浏览器内核的事情,竟然卡壳愣住了,所以以下的内容仅是初步对各大浏览器内核的调研。有不对的地方,请各位大佬指正。
浏览器内核是一个浏览器的核心部分,英文名字叫“Rendering Engine”,大致可翻译为 渲染引擎 。渲染这个词对我们前端工作人员来说应该都不陌生。浏览器内核主要就负责,将对网页语法的解释(HTML,JS,CSS)渲染在屏幕上。它决定了浏览器如何显示网页的内容以及页面的格式信息。
而前端工作人员,经常被这样要求:能够编写兼容各大主流浏览器的代码。我初步的认为,就是我们编写的代码,能够在各大内核上被正确的渲染。
那么,要达到这一个目的,首先,我们就要知道,有些什么样的浏览内核,他们各有什么特色。
Trident
也就是我们俗称的“IE内核”,早期由微软在Mosaic代码的基础之上修改而来的。
- 优点
是一款开放的内核,其接口内核设计的相当成熟 - 缺点
在早期,由于微软长时间没有更新该内核,使得它曾经一度与W3C标准脱节
内核的大量bug等安全问题没有及时解决,在非Trident内核浏览器的市场占有率大幅度提高时,使得很多网页开发者意识到了网页标准和非IE浏览器的浏览效果问题。
Webkit
苹果公司出品,是开源世界的一大贡献。
- 优点
开源,被多个浏览器应用。遵循W3C标准,性能非常好,网页浏览速度较快 - 缺点
对于网页代码的容错性不高
一个小补充,Webkit虽然被大家称为浏览器内核,但不太适合直接称为Rendering Engine,主要就是因为Webkit是由WebCore和JSCore两大引擎构成的。
Gecko
Netscape6开始采用的内核,后来的Mozilla FireFox也采用了该内核,所以常被称作“火狐内核”
- 优点
完全开源,可开发程序很高,可跨平台,功能强大、丰富,可以支持很多复杂网页效果和浏览器扩展接口 - 缺点
消耗很多的资源,比如内存
主要的浏览器内核就列了这三个,国内一般接触到的浏览器基本都是这三个内核中的一个或者是组合。许多号称拥有双核甚至多核的浏览器,一般其中一个是Trident,再搭配另外一个。国内厂商一般将Trident内核叫做“兼容浏览模式”,其他内核叫做“告诉浏览模式”
一些小知识点
我们常说的chrome浏览器是谷歌使用WebKit作为内核原型开发的一个分支,可以称之为Chromium引擎。在执行js代码,用的是谷歌自己的V8引擎
在工作中,常常要求前端开发人员代码能够兼容各大主流浏览器,其实就是在于各大浏览器使用的渲染引擎和JS引擎不同,有部分自己的渲染规则。尤其是对于很多地区还会使用低版本的IE浏览器,上文说了,早期的版本没有严格遵循W3C标准,所以给开发工作提出了很大挑战。
也许很多小伙伴在初学的时候,都会有过和我一样的思考,所谓兼容主流浏览器,不就是考虑要兼容低版本的IE吗?但是实际上,浏览器内核国内暂时没有自己的浏览器内核,全是使用国外开源的内核,所以还有很多一些小众的浏览器在开发的时候就是用Trident内核的。
关于如何兼容主流浏览器,大家请移步看看别人的文章