浏览器内核和 JS 引擎简析(2)

·  阅读 78

「这是我参与11月更文挑战的第30天,活动详情查看:2021最后一次更文挑战

上一篇文章我们讲了浏览器的渲染过程,并且解释了浏览器为什么需要 JavaScript 引擎。

  • 为什么需要 JavaScript 引擎呢?
    • 因为事实上我们编写的 JavaScript 无论是交给浏览器或者 Node.js 执行,最后都是需要被 CPU 执行的;
    • 但是 CPU 只认识自己的指令集,实际上是机器语言,才能被 CPU 执行;
    • 所以我们需要 JavaScript 引擎帮助我们将 JavaScript 代码翻译成 CPU 指令来执行;
  • 常见的 JavaScript 引擎有哪些呢?
    • SpiderMonkey:第一款 JavaScript 引擎,由 Brendan EichJavaScript 的作者)开发;
    • Chakra:微软开发,用于 IE 浏览器;
    • JavaScriptCoreWebKit 中的 JavaScript 引擎,Apple 公司开发;
    • V8Google 开发的强大的 JavaScript 引擎,也帮助 Chrome 从众多浏览器中脱颖而出;

那么,JavaScript 引擎和浏览器内核之间有什么样的关系呢?

我们以 Webkit 这一浏览器内核为例说明它俩之间的关系:

  • Webkit 实际上由两部分组成:
    • WebCore:负责 HTML 解析、布局、渲染等相关工作;
    • JavaScriptCore:解析、执行 JavaScript 代码;

也就是说,浏览器内核一般情况下由两部分组成:一部分负责解析、布局和渲染 HTML 以及 CSS 相关的内容,另一部分就是 JavaScript 引擎,负责解析、执行 JavaScript 代码。

事实上,在小程序中编写的 JavaScript 代码就是被 JsCore 执行的。关于这一点,可以从小程序官方给出的架构图中看到:

image-20210217104300202.png

小程序的架构分为两层,第一层是渲染层,通过 Webview(其内核其实就是 Webkit 内核)渲染 wxmlwxss(对应的分别是 htmlcss),第二层是逻辑层,通过 JsCore(即 JavaScriptCore)来解析执行 JavaScript 代码。

所以 JavaScriptCore 也是一个非常著名的、使用广泛的 JavaScript 引擎(另外一个强大的 JavaScript 引擎就是 V8 引擎)。

以上,就是关于 JavaScript 引擎和浏览器内核之间关系的说明,简单来说,浏览器内核包含了 JavaScript 引擎,需要 JavaScript 引擎去解析和执行 JavaScript 代码。

分类:
前端
分类:
前端
收藏成功!
已添加到「」, 点击更改