浏览器及其内核(渲染引擎 JS引擎)介绍

355 阅读5分钟

前言

趁着摸鱼的时间,总结一下对浏览器的认知。话说每天和浏览器打交道,确实该好好了解一下了。本文介绍了现阶段主流浏览器及其内核组成,即渲染引擎,JS引擎的基本概念。

正文

微软宣布IE在2023年2月14日正式宣布停止对IE浏览器的更新维护,下放全新的补丁,来将用户电脑上IE浏览器更换为新浏览器Edge,这也意味着我们与IE的交集越来越少了。也算是开发者的福音😂😂。
随着IE的退场,目前市场上主流的浏览器无非就是Chrome,Firefox,Opera,Safari,Microsoft Edge。话不多说,直奔主题。

image.png

什么是内核?

作为一个逼格较高的词“浏览器内核”,那浏览器内核到底是什么呢?其实浏览器内核指的就是浏览器最核心,最基本的部分--“Rendering Engine”,翻译为排版引擎,但是我们更愿称之为渲染引擎。它负责对网页语法的解释(例如标准通用标记语言下的一个应用HTML,JavaScript)并渲染(CSS)展示网页。内核决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有所不同,就会导致一些问题的出现,这些问题就是我们常说的兼容性问题,引起这些问题的因素就是内核(也就是渲染引擎)。

注意:虽然平时我们谈论浏览器内核时,多指代渲染引擎,但是浏览器内核其实还包含了另一个引擎--JS引擎,只不过“Rendering Engine”直译就是渲染引擎,而且JS引擎用的越来越多,越来越独立,所以就把js引擎单独拿了出来。实际上他们的关系如下。

image.png

渲染引擎

渲染引擎负责对网页HTML,XML语法的解释,并渲染(CSS)展示网页。通俗的来说,就是解析编译HTML,CSS等语法,最终渲染出页面在网页中展现出来。
现在(2023年08月02日)网上很多列举浏览器渲染引擎的都已经过时了(IE都已经落幕了),在此做一个总结。

浏览器引擎介绍
Chrome早期:Webkit
现在:Chromium/Blink
Chromium是谷歌的一个开源浏览器项目,谷歌会在最新的比较稳定的 Chromium 版本上加入其他功能使之成为新版本的 Chrome 浏览器。而 Chromium 的渲染引擎采用的就是Blink,其前身是WebkitBlink是从早期的Webkit项目(并不是Webkit2)拉出来另外维护的一个分支,是新的项目。
FirefoxGecko
(俗称Firefox内核)
Gecko是一款开源的跨平台渲染引擎,可以在 Windows、 BSD、Linux 和 Mac OS X 中使用。
Opera早期:Presto
现在:Chromium/Blink
Opera 早期使用的是Presto引擎,后来为了减少研发成本,跟随 Chrome 浏览器将渲染引擎改为Chromium 和 Blink
SafariWebKitwebkit是 KDE(Linux 桌面系统)小组的 KHTML 引擎的一个开源的分支。
Microsoft Edge旧版本:EdgeHTML
新版本:Chromium/Blink
Microsoft Edge同IE一样都是微软的产品,不过Microsoft Edge作为取代Win10IE的预设浏览器,一开始使用微软自研的EdgeHTML引擎,EdgeHTML作为Trident的升级版,提高了对HTML5标准的支持。Edge80版本开始,算是正式使用谷歌的Blink引擎
IETrident
(俗称IE内核)
作为微软早期提出的浏览器内核,是Webkit与Gecko之前一个重要的渲染引擎,虽然对HTML5标准的支持很不友好。

JS引擎

JS引擎是负责对JavaScript脚本语言的解释与执行,是一个专门处理JS脚本的虚拟机。
有一说一,对于浏览器内核的JS引擎,并没有受到大家更多的关注。就算是面试时,面试官问:你了解现阶段主流浏览器的内核吗?说一下。我相信大部分码哥都会像我一样,嘚嘚嘚的说了一堆渲染引擎。前文也说了,一般情况下我们也习惯了渲染引擎就是内核的说法。这么回答也是无伤大雅的。从另一个角度看,JS导致的兼容性问题并没有H5,C3那样“棘手”。我们先简单做个了解。

浏览器引擎
Chrome早期使用Webkit中默认的JScore
后来鼎鼎大名的V8问世
(node.js以V8作为底层架构)
FirefoxSpiderMonkey(1.0-3.0)
TraceMonkey(3.5-3.6)
JaegerMonkey(4.0-)
IonMonkey(18.0-)
OdinMonkey(22.0-)
(monkey系列)
OperaLinear A(4.0-6.1)
Linear B(7.0-9.2)
Futhark(9.5-10.2)
Carakan(10.5-)
SafariNitro(4-)
Microsoft Edge / IEJScript(IE3.0-IE8.0)
查克拉Chakra(IE9-)

Webkit

值得一提的是Webkit内核,实际上Webkit是有两部分组成:

  1. WebCore:负责HTML,CSS解析,布局,渲染等操作;
  2. JavaScriptCore(JScore):用于解析和执行JS代码;

JavaScriptCore(JScore)是Webkit中默认的JS引擎。

结语

通过对浏览器内核的了解,为下文学习了解渲染引擎,JS引擎的底层工作原理做铺垫。本专栏将持续更新,感兴趣的朋友欢迎关注👏👏👏
如有不正确的地方欢迎大佬指出,我会在第一时间修正防止误导他人。

images (2).jpeg