渲染进程和JavaScript引擎之间有什么关系?

问题描述 投票:0回答:2
我正在学习浏览器的工作原理,到目前为止我已经了解到浏览器有一个称为渲染器的进程。

该进程的部分工作是在找到 JavaScript 代码时解析并运行 JavaScript 代码。
如果是这样,那么 JavaScript 引擎在哪里?
它是渲染过程的另一个名称吗?或者当渲染进程看到 JavaScript 源代码时,它是另一个被调用的进程吗?还是我完全不知道的事情?!
如果有人能解释这个问题,我将不胜感激。

javascript browser javascript-engine
2个回答
0
投票
在浏览器中,渲染引擎的职责是:

    解析文本字符串 (HTML) 并创建 DOM
  1. 样式计算:创建计算样式并将其应用到 DOM 节点
  2. 布局:创建布局树
  3. 绘画:创建绘画记录
  4. 合成:创建图层树
Blink(Chrome 渲染引擎)嵌入了 V8(JS 引擎)。据我所知,Chrome 中的每个渲染器进程都有自己的 V8 实例。

2013年的这篇文档描述了Blink的渲染管线。

他们自己承认:

没有人完全理解当前的渲染系统。修复它的一种方法可能是开始记录它。

这就是为什么他们启动了一个名为“服务化”的项目,该项目旨在将浏览器引擎的职责拆分为“进程”。我使用引号是因为这些“进程”

不一定是操作系统进程

Chrome 的 JavaScript 引擎模块被加载到渲染器进程中,用于执行 JavaScript 逻辑,以响应鼠标单击或滚动页面等用户交互事件。您不必使用与渲染器进程其余部分相同的编程语言来编写事件处理逻辑,而是使用需要由 JavaScript 引擎解析和解释的 JavaScript 来编写。换句话说,渲染器进程调用 JavaScript 引擎模块来解析(一次性作业)并执行 JavaScript 代码。

0
投票
渲染过程(阶段)发生在 JavaScript 代码(例如事件处理程序)执行之后。两者都发生在渲染器进程中。最简单的情况下,每个Renderer Process对应一个Chrome浏览器选项卡。

© www.soinside.com 2019 - 2024. All rights reserved.