javascript - Electron 结合 Node.js 和 Chromium 上下文意味着什么?

标签 javascript node.js browserify electron chromium

a blog post作者提到 Electron 将 Node 和 Chromium 组合成一个“单一上下文”,这意味着我们不必使用 Browserify 来转换代码。

我理解 Electron 的一个含义是您可以使用网络技术构建跨平台的桌面应用程序。我也理解我们能够写入文件系统的原因是因为 Electron 内置了 Node。另外,我们能够使用 HTML/CSS/JS/DevTools 的原因是因为 Chromium 内置了。但是,我不要以为这就是作者所说的。

  • Electron 如何将 Node 和 Chromium 组合成一个“单一上下文”?
  • 为什么不必再使用 Browserify?

最佳答案

Chromium 是一款基于 Webkit 的网络浏览器,具有 V8 javascript 引擎。它支持所有常用的浏览器和 DOM API,因此有利于制作网页而不擅长与底层系统交互。

Node.js 是通过剥离 V8 引擎、制作 headless 命令行应用程序并添加大量 API 来访问文件系统而构建的,require()其他文件,运行其他 shell 程序等(您对真正的脚本语言的期望。

Electron 以一种简化的方式尝试用新的更通用的 Node.js 引擎替换 Chromium 中使用的 V8 引擎。它向 node.js 公开了一些额外的 API,以允许打开 Chromium 窗口,但也允许使用 <script> 的每个 Chromium 窗口。 标签将用 node.js 引擎解释它。

为什么选择 Electron? Chromium 本身不能做到这一点的原因是因为它最初被设计成一个网络浏览器,而在网络浏览器中,文件系统 API 是闻所未闻的,因为通常文件是托管在远程服务器上并访问用户计算机上的文件会存在安全风险(因为为什么任何一个网页都可以访问您的所有文件?)。

require语句现在开箱即用,因为 node.js 具有文件系统支持,允许它们从磁盘同步读取,而不需要将它们捆绑到同一个 javascript 文件中或从服务器请求它们。

关于javascript - Electron 结合 Node.js 和 Chromium 上下文意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166617/

相关文章:

javascript - 为什么Google Geocoding即使在计费和通话之间存在延迟的情况下仍能提供OVER_QUERY_LIMIT?

node.js - 将变量传递给所有模块

javascript - 字母变换

javascript - 如何动态更改链接的行高或字体大小(<a>)?

node.js - 端口 80 上的 SocketIO 与 Express 一起

javascript - Karma/Istanbul Code Coverage 找不到函数,总是返回 100%

javascript - 浏览器化 bundle

javascript - Watchify 可以获取对 html 文件的更改吗?

javascript - 数据表jquery点击事件在分页后不起作用

node.js - 我想在 html 页面上使用 Angular 显示一些查询 Mongoose 结果数据