Electron将Node.js和Chromium上下文结合起来意味着什么?

在博客文章中 ,作者提到,Electron将Node和Chromium结合到一个“单一的上下文”中,这意味着我们不必使用Browserify来转换代码。

我明白Electron的一个含义是您可以使用Web技术构build跨平台的桌面应用程序。 我也明白为什么我们能够写入文件系统的原因是因为Electron已经烧入了Node。而且,我们能够使用HTML / CSS / JS / DevTools的原因是因为Chromium被烘烤了。但是,我不要以为这是作者所说的。

  • Electron如何将Node与Chromium结合成一个“单一的环境”?
  • 为什么不必再使用Browserify?

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

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

电子以简化的方式是试图用Chromium中使用的V8引擎replaceNode.js中更通用的新的引擎。 它向node.js公开了一些额外的API来允许打开铬窗口,而且每个使用<script>标记的铬窗口都会用node.js引擎解释它。

为什么select电子? Chromium本身无法做到这一点的原因是因为它最初被devise成一个Web浏览器,而在Web浏览器中,文件系统API将是前所未闻的,因为通常文件托pipe在远程服务器上,访问用户计算机上的文件是一个安全风险(因为为什么任何单个网页都可以访问您的所有文件?)。

require语句现在可以工作,因为node.js具有文件系统支持,可以使它们从磁盘同步读取,而不需要将它们捆绑到相同的JavaScript文件或从服务器请求它们。

因此,在正常情况下,Node.js和Web浏览器是两个独立的上下文,这就是为什么通常不得不使用Browserify来编译Node.js代码以用于Web浏览器的原因。

与PHP脚本一样,Web服务器需要某种处理程序才能在Web浏览器中正确执行。 与HTML和CSS相比,甚至JavaScript能够在Web浏览器中执行而无需任何进一步干预,因为Web浏览器已经包含了parsingHTML并解释和运行JS的所有必要工具。

对于Electron来说,现代networking浏览器能够执行JavaScript的方式是相同的。 随着电子,铬已被修改,以便能够执行节点。 Electron Browserify,Electron是允许Node.js和Chromium一起工作的容器,无需任何进一步的修改或干预。

所以说,Node和Chromium已经被合并到一个上下文中,这意味着Node和Chomium能够像对待一个一样工作和连接到彼此,而不需要任何其他工具或步骤来“链接”两个一起。