前言
趁着摸鱼的时间,总结一下对浏览器的认知。话说每天和浏览器打交道,确实该好好了解一下了。本文介绍了现阶段主流浏览器及其内核组成,即渲染引擎,JS引擎的基本概念。
正文
微软宣布IE在2023年2月14日正式宣布停止对IE浏览器的更新维护,下放全新的补丁,来将用户电脑上IE浏览器更换为新浏览器Edge,这也意味着我们与IE的交集越来越少了。也算是开发者的福音😂😂。
随着IE的退场,目前市场上主流的浏览器无非就是Chrome,Firefox,Opera,Safari,Microsoft Edge。话不多说,直奔主题。
什么是内核?
作为一个逼格较高的词“浏览器内核”,那浏览器内核到底是什么呢?其实浏览器内核指的就是浏览器最核心,最基本
的部分--“Rendering Engine”,翻译为排版引擎,但是我们更愿称之为渲染引擎
。它负责对网页语法的解释(例如标准通用标记语言
下的一个应用HTML,JavaScript)并渲染(CSS)展示网页。内核决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有所不同
,就会导致一些问题的出现,这些问题就是我们常说的兼容性问题
,引起这些问题的因素就是内核(也就是渲染引擎)。
注意:虽然平时我们谈论浏览器内核时,多指代渲染引擎,但是浏览器内核其实还包含了另一个引擎--
JS引擎
,只不过“Rendering Engine”直译就是渲染引擎,而且JS引擎用的越来越多,越来越独立,所以就把js引擎单独拿了出来。实际上他们的关系如下。
渲染引擎
渲染引擎负责对网页HTML,XML语法的解释,并渲染(CSS)展示网页。通俗的来说,就是解析编译HTML,CSS等语法,最终渲染出页面在网页中展现出来。
现在(2023年08月02日)网上很多列举浏览器渲染引擎的都已经过时了(IE都已经落幕了),在此做一个总结。
浏览器 | 引擎 | 介绍 |
---|---|---|
Chrome | 早期:Webkit 现在:Chromium/Blink | Chromium是谷歌的一个开源浏览器项目,谷歌会在最新的比较稳定的 Chromium 版本上加入其他功能使之成为新版本的 Chrome 浏览器。而 Chromium 的渲染引擎采用的就是Blink,其前身是Webkit。Blink是从早期的Webkit项目(并不是Webkit2)拉出来另外维护的一个分支,是新的项目。 |
Firefox | Gecko (俗称Firefox内核) | Gecko是一款开源的跨平台渲染引擎,可以在 Windows、 BSD、Linux 和 Mac OS X 中使用。 |
Opera | 早期:Presto 现在:Chromium/Blink | Opera 早期使用的是Presto引擎,后来为了减少研发成本,跟随 Chrome 浏览器将渲染引擎改为Chromium 和 Blink。 |
Safari | WebKit | webkit是 KDE(Linux 桌面系统)小组的 KHTML 引擎的一个开源的分支。 |
Microsoft Edge | 旧版本:EdgeHTML 新版本:Chromium/Blink | Microsoft Edge同IE一样都是微软的产品,不过Microsoft Edge作为取代Win10IE的预设浏览器,一开始使用微软自研的EdgeHTML引擎,EdgeHTML作为Trident的升级版,提高了对HTML5标准的支持。Edge80版本开始,算是正式使用谷歌的Blink引擎 |
IE | Trident (俗称IE内核) | 作为微软早期提出的浏览器内核,是Webkit与Gecko之前一个重要的渲染引擎,虽然对HTML5标准的支持很不友好。 |
JS引擎
JS引擎是负责对JavaScript脚本语言的解释与执行,是一个专门处理JS脚本的虚拟机。
有一说一,对于浏览器内核的JS引擎,并没有受到大家更多的关注。就算是面试时,面试官问:你了解现阶段主流浏览器的内核吗?说一下。我相信大部分码哥都会像我一样,嘚嘚嘚的说了一堆渲染引擎。前文也说了,一般情况下我们也习惯了渲染引擎就是内核的说法。这么回答也是无伤大雅的。从另一个角度看,JS导致的兼容性问题并没有H5,C3那样“棘手”。我们先简单做个了解。
浏览器 | 引擎 |
---|---|
Chrome | 早期使用Webkit中默认的JScore 后来鼎鼎大名的V8问世 (node.js以V8作为底层架构) |
Firefox | SpiderMonkey(1.0-3.0) TraceMonkey(3.5-3.6) JaegerMonkey(4.0-) IonMonkey(18.0-) OdinMonkey(22.0-) ( monkey系列 ) |
Opera | Linear A(4.0-6.1) Linear B(7.0-9.2) Futhark(9.5-10.2) Carakan(10.5-) |
Safari | Nitro(4-) |
Microsoft Edge / IE | JScript(IE3.0-IE8.0) 查克拉Chakra(IE9-) |
Webkit
值得一提的是Webkit内核,实际上Webkit是有两部分组成:
- WebCore:负责HTML,CSS解析,布局,渲染等操作;
- JavaScriptCore(JScore):用于解析和执行JS代码;
JavaScriptCore(JScore)是Webkit中默认的JS引擎。
结语
通过对浏览器内核的了解,为下文学习了解渲染引擎,JS引擎的底层工作原理做铺垫。本专栏将持续更新,感兴趣的朋友欢迎关注👏👏👏
如有不正确的地方欢迎大佬指出,我会在第一时间修正防止误导他人。