Skip to content

Latest commit

 

History

History
29 lines (23 loc) · 2.1 KB

201001.md

File metadata and controls

29 lines (23 loc) · 2.1 KB

浏览器内核

发展

以前浏览器内核包含了渲染引擎以及js引擎,随着js的职责越来越重,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。


渲染引擎(内核)

  1. IE: trident 内核
  2. Firefox:gecko 内核
  3. Safari: webkit 内核
  4. Opera: 以前是 presto 内核, Opera 现已改用 Google Chrome 的 Blink 内核
  5. Chrome: Blink( 基于 webkit , Google 与 Opera Software 共同开发 )

渲染引擎工作流程

  1. HTML解析器解析 DOM 树, 解析为 DOM 树上个节点,同时碰到 style 解析 CSS 样式, 解析为 CSSOM 树
  2. 当DOM树和CSSOM树都构建完之后,浏览器根据这两个树构建一棵渲染树(具有一定的视觉效果,并按照一定顺序排列在屏幕上)
  3. 渲染树构建完成以后,浏览器计算所有元素大小和绝对位置
  4. 布局计算完成后,浏览器在页面渲染元素。经过渲染引擎处理后,整个页面就显示出来

js 引擎

  1. IE: Chakra; 虽然新版的IE(IE9及之后的版本)以及Edge使用的是Chakra,但老版的IE仍然使用的是Jscript,以及 2018 年后 Edge 决定使用 v8
  2. Firefox:JaegerMonkey,德文Jäger原意为猎人,结合追踪和组合码技术大幅提高性能,部分技术借凿了V8、JavaScriptCore、WebKit,用于Mozilla Firefox 4.0以上版本。
  3. Safari: Nitro(SquirrelFish)(Safari)2008年6月2日,WebKit开发团队声明了 SquirrelFish,一个能极大地提升Safari解释脚本速度的JavaScript引擎。SquirrelFish是基于寄存器、直接线程的高级字节码引擎。
  4. Opera: 以前是 presto 内核, Opera 现已改用 Google Chrome 的 Blink 内核
  5. Chrome: V8;谷歌公司开发的V8浏览器基于C++,在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序在V8引擎下的运行速度媲美二进制程序。 NodeJS其实就是封装了V8。