【前端】浅谈浏览器内核:渲染引擎、JS引擎
浏览器内核是什么?
简而言之,浏览器内核就是把我们编写的代码转换为页面的中控件。
虽然现在大家谈起浏览器内核时,多指代渲染引擎(Rendering engine 或 layout engineer)。但其实浏览器内核包括了两部分,渲染引擎和JS引擎,只是后来JS引擎用的越来越多所以就单独的把JS引擎拿了出来。
渲染引擎
渲染引擎负责负责对网页语法的解释(如HTML、XML等)并渲染网页(CSS)。渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。
下面介绍一下主流的渲染引擎。
- Trident(IE)
国内许多双核浏览器的其中一核便是Trident,也就是我们所说的兼容模式。
如IE、腾讯TT、猎豹浏览器、360极速浏览器、百度浏览器等都使用了Trident。
在Win10发布后,微软将其内置浏览器命名为Edge,Edge的最显著特点就是新内核EdgeHTML。 - Gecko(firefox)
Gecko的最大特点便是完全开源,开发程度很高。可惜近几年开始没落了,如打开速度过慢,猪一样的对友Flash以及神一样的对手Chrome。 - WebKit(safari)
大名鼎鼎的WebKit内核是苹果公司开发的。像Opera、Chrome早期都使用的是WebKit作为浏览器内核。
虽然Chrome早已换为Blink内核,但是当提到WebKit时,大家还是会自动联想到Chrome(苹果已经哭晕在厕所)。 - Blink(Chrome)
2013年,Google 宣布将在未来的 Google Chrome/Chromium 中使用基于 WebKit 的 fork Web 渲染引擎:Blink。同时 Opera 表示也将跟进 Google Chrome/Chromium 的步伐。
且目前大部分国内浏览器最新版本的内核也都改为了Blink。
JS引擎
JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器之中。即负责对JavaScript脚本的解释与执行。
- V8(Chrome)
谷歌公司开发的V8浏览器基于C++,在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序在V8引擎下的运行速度媲美二进制程序。
NodeJS其实就是封装了V8。 - Chakra (IE)
Chakra 中文译名为查克拉(火影乱入)。虽然新版的IE(IE9及之后的版本)以及Edge使用的是Chakra,但老版的IE仍然使用的是Jscript。 - Nitro(SquirrelFish)(Safari)
2008年6月2日,WebKit开发团队声明了SquirrelFish,一个能极大地提升Safari解释脚本速度的JavaScript引擎。
SquirrelFish是基于寄存器、直接线程的高级字节码引擎。 - Carakan(Opera)
- Mozilla(firefox)
总结
一个典型的浏览器有一个渲染引擎和一个独立的JavaScript引擎。这样JavaScript引擎能够被更方便的测试、重新生成或者在另一些项目中使用。例如Carakan被用在Presto中,Nitro被用在WebKit中,SpiderMonkey被用在Gecko中,KJS被用在KHTML中,Rhino默认不包含任何布局引擎。但还有其他组合,例如V8与WebKit被用于Chrome浏览器中。JavaScript引擎能为程序员提供部分操作浏览器的功能(网络、DOM、外部事件、HTML5视频、canvas和存储)。
【前端】浅谈浏览器内核:渲染引擎、JS引擎相关推荐
- vuex中的值变化 页面重新渲染_浅谈浏览器的渲染过程,重绘与回流
浏览器的渲染过程 首先,我们先来了解一下浏览器的渲染过程是什么样的,也就是说浏览器把一堆代码呈现到页面上的过程是什么样子的,浏览器采用流式布局模型(Flow Bsaed Layout),根据下图,我们 ...
- 【前端】浏览器内核(渲染引擎)有哪些?
一.浏览器的结构: ① 用户界面(UI):包括菜单栏.工具栏.地址栏.后退/前进按钮.书签目录等,也就是能看到的除了显示页面的主窗口之外的部分: ② 浏览器引擎(Rendering engine):也 ...
- 浏览器内核-渲染引擎、js引擎
一个完整的浏览器包含浏览器内核和浏览器的外壳(shell).浏览器核心--内核分成两部分:渲染引擎和js引擎.由于js引擎越来越独立,内核就倾向于只指渲染引擎. 1 浏览器组成结构 浏览器一般由七个模 ...
- 浅谈浏览器多进程与JS线程
引言 一直对浏览器的进程.线程的运行一无所知,经过一次的刷刷刷相关的博客之后,对其有了初步的了解,是时候该总结一波了. 进程.线程之间的关系 一个进程有一个或多个线程,线程之间共同完成进程分配下来的任 ...
- 浅谈ssr服务器渲染、客户端渲染和预渲染以及前端打包部署
浅谈ssr服务器渲染.客户端渲染和预渲染以及前端打包部署 1.客户端渲染: 2.服务器渲染(SSR) 3.预渲染 前端打包文件dist结合nginx和node原理图(个人见解) 今天下班在地铁上直到现 ...
- 浅谈浏览器多进程与JS线程 1
面试被问到了浏览器线程,没答出来,最终还是感谢拿到了offer 对于浏览器的知识还是知道的太少了,开始恶补TAT 文章目录 一.进程.线程之间的关系 二.浏览器内的进程 三.浏览器内核(渲染进程) 四 ...
- 浅谈浏览器的兼容性(从HTML、CSS、JS、PC端、移动端等方面)
浅谈浏览器的兼容性) 前言 一.HTML部分 a.html5的新标签 b.img的alt属性 c.ul标签内外边距问题 二.css部分 a.css的hack问题:主要针对IE的不同版本,不同的浏览器的 ...
- CSS-0816盒模型 标准盒模型怪异盒模型及其应用背景属性补充小图标使用图标网站可变化单位meta元信息浏览器内核(渲染机制)响应式页面 媒体类型媒体特性opacity和背景色设置透明的区别
title: "CSS 0816" date: 2022-08-16T11:18:25+08:00 文章目录 title: "CSS 0816" date: 2 ...
- js首次修改html无效,浅谈jQuery添加的HTML,JS失效的问题
浅谈jQuery添加的HTML,JS失效的问题 如下图所示, 点击添加后,会新添加一行,但是二级联动就失效了, $('.provinceList').live('change', function() ...
最新文章
- 大志非才不就,大才非学不成—博文资源汇总
- 笔记-项目范围管理-需求工程-需求管理
- php代码审计步骤,php代码审计(一)-----调试函数
- L1-063 吃鱼还是吃肉 (10 分)-PAT 团体程序设计天梯赛 GPLT
- URDF与xacro
- DIV+CSS样式表命名的规则方法
- git学习 远程仓库02
- python接口自动化4-绕过验证码登录(cookie) (转载)
- 搜狗输入法 android2.3,搜狗输入法安卓版
- 原生js 实现小人吃豆豆小游戏
- 百度地图api之路线规划
- python中三个点(…)
- Apache中文URL中有包含“\x85”字节的汉字时导致的Rewrite失败及404问题
- CHD5.3.6在线安装和维护踩坑指南
- spring boot酒店会员点餐系统毕业设计源码072005
- 配置NSG限制VM访问Internet
- 开源的Jshop微信小程序商城源码
- 宏观经济笔记--社会消费品零售总额
- inet_ntoa() inet_aton()
- 在jsp中引入jQuery