浏览器内核的介绍

news2024/12/23 23:59:37

文章目录

  • 1、什么是浏览器内核
  • 2、常用浏览器内核
  • 3、浏览器内核分类
      • 3. 1、Trident
      • 3.2、Gecko
      • 3.3、Webkit
      • 3.4、Chromium
      • 3.5、Presto
      • 3.6、国内主流浏览器
  • 4、五大主流浏览器(诞生顺序)
      • 4.1、IE(Internet Explorer)浏览器
      • 4.2、Opera浏览器
      • 4.3、Safari浏览器:
      • 4.4、Firefox浏览器:
      • 4.5、Chrome浏览器:
  • 5、总结

1、什么是浏览器内核

简单来说,浏览器内核是浏览器的核心,也称“渲染引擎”,用来解释网页语法并渲染到网页上,浏览器内核决定了浏览器该如何显示网页内容以及页面的格式信息。

浏览器内核又可以分成两部分:渲染引擎JS引擎

  • 渲染引擎:负责获取网页的内容并显示,不同的浏览器内核对网页的解析渲染也不同。
  • JS引擎:负责解析 Javascript 语言,执行 javascript 语言来实现网页的动态效果

起初渲染引擎和 JS 引擎并没有区分的很明确,后来 JS 引擎越来越独立内核就倾向于只指渲染引擎

浏览器内核(Rendering Engine),是指浏览器最核心的部分,负责对网页语法的解释(如标准通用标记语言下的一个应用HTML、JavaScript)并渲染(显示)网页。

所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。

2、常用浏览器内核

内核的种类很多,常见的浏览器内核可以分这四种:Trident、Gecko、Blink、Webkit。

作为一名前端开发人员,你写的页面在那些浏览器测试过?这些浏览器的内核分别是什么?

下面总结一下各常用浏览器所使用的内核:

  • IE: Trident内核,也是俗称的IE内核。
  • Chrome: 统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核。
  • Firefox: Gecko内核,俗称Firefox内核。
  • Safari: Webkit内核。
  • Opera: 最初是自己的Presto内核,后来是Webkit,现在是Blink内核。
  • 360、猎豹: IE+Chrome双内核。
  • 搜狗、遨游、QQ浏览器: Trident(兼容模式)+Webkit(高速模式)。
  • 百度、世界之窗: IE内核。
  • 2345浏览器: 以前是IE内核,现在也是IE+Chrome双内核。

(前五个浏览器是目前五大主流浏览器,而五大浏览器采用的都是单内核)

3、浏览器内核分类

3. 1、Trident

  • IE的内核,也就是国内双核浏览器的内核之一,此内核只能用于Windows平台,且不是开源的。Trident内核一直延续到IE11,IE11的后继者Edge采用了新内核EdgeHTML。

3.2、Gecko

  • 开源内核,后来被FF(FireFox)采用,最大优势是跨平台,在Microsoft Windows、Linux、MacOs X等主要操作系统中使用。

3.3、Webkit

  • 开源内核,Webkit的鼻祖是Safari,曾经的Chrome用的是Webkit。注意:Webkit其实包括是渲染引擎Webcore(前身是KHTML),以及JS引擎JSCore。

  • Safari浏览器内核:Webkit内核;KHTML->Webkit(WebCore+JSCore)->Webkit2

3.4、Chromium

  • 开源内核,chromium fork自Webkit,代码可读性和编译速度得到提升。值得一提是谷歌专门研发了自己的JS引擎——V8,极大地提高了JS的运算速度。

  • Blink内核是由Google和Opera Software开发的浏览器排版引擎,2013年4月发布。现在Chrome内核是Blink。

  • Chromium内核 → Webkit内核 → Blink内核。

3.5、Presto

  • Opera Software开发的浏览器排版引擎,它是世界公认最快的渲染速度的引擎,Opera7.0开始使用。13年2月后为了减少研发成本,Opera放弃Presto宣布加入谷歌阵营,采用chromium,之后也紧跟Blink的脚步。

3.6、国内主流浏览器

  • 360浏览器、猎豹浏览器内核:IE内核+Chrome双内核。

  • 搜狗、遨游、QQ浏览器内核:IE内核(兼容模式)+Webkit(高速模式)。

  • 百度浏览器、世界之窗内核:IE内核。

  • 2345浏览器内核:好像以前是IE内核,现在也是IE+Chrome双内核了。

  • UC浏览器内核:这个众口不一,UC说是他们自己研发的U3内核,但好像还是基于Webkit和Trident,还有说是基于火狐内核。

4、五大主流浏览器(诞生顺序)

4.1、IE(Internet Explorer)浏览器

  • IE的诞生起源于1994年,当时微软为了对抗几乎占据市场百分之九十份额的网景Netscape Navigator(导航者),准备在windows中开发自己的浏览器,取名为Internet Explorer,意为因特网探险者,好吧,一个导航者一个探险者,从名字起火药味就很重啊(ps 自此也拉开了第一次浏览器大战的帷幕,结果大家都知道了,微软大获全胜,基本以98年网景将自己卖给了AOL公司暂且告终,但是还没结束,因为后来网景换了个身份,也就是Firefox火狐,又进入了大众视野,迸发了一种凤凰涅槃的快感,到今天为止Firefox也成为了五大主流之一,后面我们再说它~话说回来,竞争才能推动技术的发展,第一次浏览器大战以微软和网景为代表,大力推动了浏览器方面技术的发展,各大公司开始着手研发自己的浏览器,有压力才有动力嘛),但是微软着急对抗网景啊,没那么多时间从零开始,于是选择和和Spyglass合作,所以IE其实从早期一款商业性的专利网页浏览器Spyglass Mosaic派生出来,虽然Spyglass Mosaic与NCSA Mosaic(1993年,美国NCS(National Center for Supercomputing Applications)也就是国家超级计算机中心,发布的世界上第一款Web浏览器取名为Mosaic,后来网景大名鼎鼎的Mozilla就来自于这里,意为Mosaic Killer(Mosaic杀手)不过事实上, Mosaic 并不是第一个具有图形界面的网页浏览器,但是, Mosaic 是第一个被人普遍接受的浏览器,它让许多人了解了Internet )甚为相似,但Spyglass Mosaic则相对地较不出名并使用了NCSA Mosaic少量的源代码~~

  • 从1996年开始,微软从Spyglass手里拿到了Spyglass Mosaic的源代码和授权。从而使IE逐渐成为微软专属软件。(后来,微软以IE和操作系统捆绑的模式不断扩展其市场份额,使IE成为了浏览器市场的绝对主流~~)从那时开始,IE的呈现引擎就是Trident,这也是大家俗称的IE内核,国内的大多数浏览器都有使用IE内核,或者是IE和Chrome双内核这样的形式来提高性能。

4.2、Opera浏览器

  • Opera创始于1995年4月,由挪威Opera Software ASA公司发布,2016年2月确定被奇虎360和昆仑万维收购(题外话Opera浏览器从一开始,就在做自己的东西,无论是内核还是版本号,虽然后来为了市场份额还是弃用了曾让其达到巅峰的Presto,转向了Webkit,现在是Blink,但我还是欣赏这家公司在残酷的浏览器大战中坚持自己并存活下来的顽强精神的,它的起源时间和IE差不多,但是没有微软那样强大的后台也许从它弃用自己内核的那时候起就决定了这个结果吧但是不得不说,它为浏览器的发展贡献了不可或缺的一份力量最后,希望奇虎和万维能将这样一个有骨血的浏览器继续发扬光大吧,虽然~最初的东西已经没有了)。自我感觉,Opera能从第一次浏览器大战两大霸主的交火中勉强存活下来已经是个奇迹了,毕竟后来的三大浏览器都是诞生于第一次浏览器大战之后,但是却没抵得过时间的考验,这真的是个悲伤的故事。
  • 前段括弧里面已经交代清楚了,Opera浏览器的内核最初是Presto,前几年宣布使用Google的开源项目Webkit作为自己的内核,没过多久,又跟随Google使用Blink内核。

4.3、Safari浏览器:

  • 第二次浏览器大战基本是从苹果公司2003年1月发布其自有浏览器Safari开始的,苹果利用自己独天得厚的手机市场份额,使Safari浏览器的用户数量不断上升。从Safari推出之时起,它的渲染引擎就是Webkit,一提到 webkit,首先想到的便是 chrome,可以说,chrome 将 Webkit内核 深入人心,殊不知,Webkit 的鼻祖其实是 Safari。现在很多人错误地把 webkit 叫做 chrome内核(即使 chrome内核已经是 blink 了),苹果都哭瞎了有木有。Safari 是苹果公司开发的浏览器,使用了KDE(Linux桌面系统)的 KHTML 作为浏览器的内核,Safari 所用浏览器内核的名称是大名鼎鼎的 WebKit。 Safari 在 2003 年 1 月 7 日首度发行测试版,并成为 Mac OS X v10.3 与之后版本的默认浏览器,也成为苹果其它系列产品的指定浏览器(也已支持 Windows 平台)。如上述可知,WebKit 前身是 KDE 小组的 KHTML 引擎,可以说 WebKit 是 KHTML 的一个开源的分支。当年苹果在比较了 Gecko 和 KHTML 后,选择了后者来做引擎开发,是因为 KHTML 拥有清晰的源码结构和极快的渲染速度。Webkit内核可以说是以硬件盈利为主的苹果公司给软件行业的最大贡献之一。随后,2008 年谷歌公司发布 chrome 浏览器,采用的 chromium 内核便 fork 了 Webkit。

4.4、Firefox浏览器:

  • 前面提到过,在第一次浏览器中大败的网景公司并没有彻底烟消云散,就是几经曲折(此处省略,有兴趣查阅资料),原网景公司的人员创办了Mozilla基金会,这是一个非盈利组织,正是他们在2004年推出了自己的浏览器Firefox,并且以之前的Mosaic内核为基础,开发了Gecko引擎,这也是火狐自04年发布以来一直使用的渲染引擎后来在2005年,又在基金会的基础上成立了Mozilla公司,其主要任务就是继续开发Firefox。Gecko是一个开源项目,代码完全公开,因此受到很多人的青睐~~对了,从Firefox问世开始,第二次浏览器大战基本算是彻底打响了,第二次浏览器大战与第一次二元鼎力的局面不同,这一次的特点就是百家争鸣,也自此打破了IE浏览器从98年网景被收购后独步浏览器市场的局面。

4.5、Chrome浏览器:

  • 2008年,大名鼎鼎的互联网巨头Google公司发布了它的首款浏览器Chrome浏览器。虽然在浏览器方面,Chrome算是年轻的一代了,但是没办法啊,人家是富二代官二代啊,后台太强,而且确实先天能力得天独厚,从文章最初贴的那个浏览器市场份额报告可以看出即便是在国内市场,Chrome浏览器依然占据着半壁江山。前面说的,其实Chrome浏览器的内核名为chromium,也就是现在大家习惯称的chrome内核,而且按照大家的误解,一直认为的chrome内核就是由苹果公司最先选择的算是KHTML引擎的分支-Webkit,这大概是苹果公司至今说不清道不明的伤痛吧~~chromium fork 自开源引擎 webkit,却把 WebKit 的代码梳理得可读性提高很多,所以以前可能需要一天进行编译的代码,现在只要两个小时就能搞定。因此 Chromium 引擎和其它基于 WebKit 的引擎所渲染页面的效果也是有出入的。所以有些地方会把 chromium 引擎和 webkit 区分开来单独介绍,而有的文章把 chromium 归入 webkit 引擎中,都是有一定道理的。(谷歌公司还研发了自己的 Javascript 引擎,V8,极大地提高了 Javascript 的运算速度。)chromium 问世后,带动了国产浏览器行业的发展。一些基于 chromium 的单核,双核浏览器如雨后春笋般拔地而起,例如 搜狗、360、QQ浏览器等等,无一不是套着不同的外壳用着相同的内核。

  • 然而 2013 年 4 月 3 日,谷歌在 Chromium Blog 上发表 博客,称将与苹果的开源浏览器核心 Webkit 分道扬镳,在 Chromium 项目中研发 Blink 渲染引擎(即浏览器核心),内置于 Chrome 浏览器之中。其实Blink引擎就是也就是Webkit的分支,就像Webkit是KHTML的分支一样。Blink引擎现在是谷歌公司与Opera Software共同研发,上面提到过的,Operaqq弃用了自己的Presto内核,加入Google阵营,跟随谷歌一起研发Blink,套上Chromium内核后,用户体验貌似确实大不如前,鼎盛时期的Opera7.0也不复存在~~。

5、总结

在这里插入图片描述

浏览器内核主要指的是浏览器的渲染引擎。内核主要有Trident(IE),Gecko(firefox),Webkit(Safari chrome 等)以及 Presto(opera)。在2013年谷歌开始研发 blink 引擎,chrome 28 以后开始使用,而 opera 则放弃了自主研发的 Presto 引擎,投入谷歌怀抱,和谷歌一起研发 blink 引擎。

不同的内核对网页编写语法的解释也有不同,进而导致同一个页面在不同内核的浏览器下显示出来的效果也会有所出入,这也是作为一个前端工程师需要了解不同浏览器所使用的内核和各种兼容性问题。浏览器内核是浏览器的核心,也叫“渲染引擎”,解释html并渲染绘制。浏览器内核决定了浏览器该如何显示网页内容以及页面的格式信息。不同的浏览器内核对网页的语法解释也不同,因此网页开发者需要在不同内核的浏览器中测试网页的渲染效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决vue3中使用个别form表单校验失灵

当我点击校验时 其他都有触发校验 唯独radio没有触发,绑定都没有问题 看一下代码 const data reactive({form: {},rules: {serverStatus: [{ required: true, message: "服务状态不能为空", trigger: change }],tenantName: [{ required: true, messag…

hypef 五、请求及响应

文档地址 Hyperf https://hyperf.wiki/2.0/#/zh-cn/response 一、请求 1.1 安装 composer require hyperf/http-message 框架自带不用手动安装。 1.2 请求对象 在 onRequest 生命周期内可获得Hyperf\HttpServer\Request对象。 可以通过以来注入和路由对应参数获取。 de…

我的创作纪念日 --- 简单记录

理想并不是一种空虚的东西,也并不玄奇;它既非幻想,更非野心,而是一种追求善美的意识。 机缘 大家好,今天是我成为创作者的第256天,也是我在CSDN上发布的第81篇文章。在这里,我想和大家简单记…

C#(五十五)之线程死锁

死锁是指多个线程共享资源是&#xff0c;都占用同意部分资源&#xff0c;而且都在等待对方师范另一部分资源&#xff0c;从而导致程序停滞不前的情况 示例&#xff1a; /// <summary>/// 定义一个刀/// </summary>public static object knife new object();/// …

git install报错问题

报错如下&#xff1a; fatal: unable to connect to githurb.com: 运行如下命令即可&#xff1a; git config --global url.https://github.com/.insteadOf git://github.com/ git config --global url."https://".insteadOf git://接着再删除node_moudels包&…

Spring Boot 操作 Redis 的各种实现

一、Jedis,Redisson,Lettuce三者的区别 共同点&#xff1a;都提供了基于Redis操作的Java API&#xff0c;只是封装程度&#xff0c;具体实现稍有不同。 不同点&#xff1a; 1.1、Jedis 是Redis的Java实现的客户端。支持基本的数据类型如&#xff1a;String、Hash、List、Se…

卡尔曼滤波实例分析(二)

1 问题 假设一物体以一初速度 v 0 v_0 v0​位于一高度为 y 0 y_0 y0​处正处于匀速下降状态&#xff0c;此时该物体启动制动装置&#xff0c;以一个加速度为 a a a的作用力反向运动 &#xff08;1&#xff09;建模 速度&#xff1a; V V 0 − a ∗ t V V_0 - a*t VV0​−a∗…

API6中JS UI实现富文本组件居右显示

【关键字】 RichText、富文本组件、API6、JS UI、居右显示 【关键代码如下】 index.hml <div class"container"><text>文本行高</text><text>文本行高</text><text>文本行高</text><text>文本行高</text>&…

SciencePub学术 | 计算机与生物信息类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 计算机与生物信息类重点SCIE&EI征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机与生物信息类重点SCIE&EI 【期刊简介】IF&#xff1a;7.5-8.0&#xff0c;JCR1区&#xff0c;中科院1区TOP&…

vscode设置自己用的注释格式

ctrlshiftP 打开设置 输入snippets&#xff0c;选择配置用户代码片段[Snippets: Configure User Snippets]输入JavaScript&#xff0c;选择JavaScript.json 把这段代码替换进去 "Print to jsNoteTitle": {"prefix": "jsNoteTitle","body&q…

阿里云国际站:阿里云还值得我们期待吗?

阿里云还值得我们期待吗&#xff1f;   "阿里云&#xff0c;还可以继续期待吗&#xff1f;"这是一个近期在各大行业论坛和科技洪流之中频繁引发热议的问题。然而&#xff0c;深究其实质&#xff0c;答案不言自明——无须怀疑&#xff0c;阿里云绝对值得我们赋予期待…

MTK日志路径——aosp\device\mediatek\common\mtklog

这里写目录标题 device\mediatek\common\mtklog1.mtklog-config-basic-eng.prop2.mtklog-config-basic-user.prop3.mtklog-config-bsp-eng.prop4.mtklog-config-bsp-user.prop device\mediatek\common\mtklog 在安卓源码中&#xff0c;device\mediatek\common\mtklog目录包含了…

解决node+mysql不能保存emoji表情包的问题

效果图 1.前端 2.数据库 实现 Emoji表情是4个字节&#xff0c;而mysql的utf8编码最多3个字节&#xff0c;所以数据插不进去&#xff0c;而utfmb64是支持四个字节的。所以需要将mysql编码从utf8转换成utf8mb4&#xff0c;从【数据库、表、相应字段】都需要修改为utf8mb4&…

Flask+Vue+小程序电商生态系统

完整资料进入【数字空间】查看——baidu搜索"writebug" 本项目为FlaskVue小程序全栈开源电商生态系统。本项目使用的技术有&#xff1a;前端&#xff1a;VueIviewWxxcx&#xff1b;后端&#xff1a;FlaskMysql&#xff1b;部署&#xff1a;NginxGunicorn。该项目包含…

C++—异常与类型转换、大小端存储、不使用额外空间的情况下交换两个数

异常 常见的异常包括&#xff1a;数组下标越界&#xff0c;除法计算的时候除数为0&#xff0c;动态分配空间时空间不足。 try&#xff0c;throw&#xff0c;catch #include <iostream> using namespace std; int main() {double m 1, n 0;try {cout << "b…

其实,大多数的项目经理都是在假装努力罢了

早上好&#xff0c;我是老原。 有很多项目经理平时忙的团团转&#xff0c;看起来努力的不行&#xff0c;但实际上进度缓慢、结果不佳&#xff0c;更别说个人成长了&#xff0c;问就是工作都这么忙了&#xff0c;哪有时间。 说来也能理解&#xff0c;毕竟现在不是007就是996&a…

spring整合RabbitMQ

先导入依赖POM.xml 之前导的不全一直报错后面导入的可能有多的 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

Python3,66行代码,搞了个音乐下载器,从此听歌再也不需要花费银子了,真香!

66行代码敲出音乐下载器 1、引言2、代码实战2.1 思路2.2 安装2.3 示例 3、 总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;最近比较流行的那首歌&#xff0c; 咋又说费了。 小鱼&#xff1a;那你就冲个VIP呗。 小屌丝&#xff1a;开玩笑&#xff0c; 我的钱又不是大风刮过来…

第2集丨JavaScript 中原型链(prototype chain)与继承

目录 一、一些基础概念1.1 ECMAScript 标准1.2 prototype和 __proto__1.3 constructor属性1.4 函数名 二、原型链的维护2.1 内部原型链和构造器原型链2.2 从实例回溯原型链2.3 修正原型指向 三、基于原型链的继承3.1 继承属性3.2 继承“方法” 四、构造函数4.1 案例一个简单的实…

SAP S4 Hana 财务凭证存储表变化

一、统一日记账的表 1. ACDOCA里有的&#xff0c;BSEG里不一定有 以下的一些凭证行项目&#xff0c;都是只在ACDOCA表里面存在&#xff0c;而在BSEG表里不存在的&#xff08;你可以通过BKPF表的BSTAT字段的凭证状态U来识别&#xff09;&#xff1a; 资产折旧过账 特定账套&am…