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

Javascript Electron将Node.js和Chromium上下文结合起来意味着什么?,javascript,node.js,browserify,electron,chromium,Javascript,Node.js,Browserify,Electron,Chromium,作者在文章中提到,Electron将Node和Chromium组合成一个“单一上下文”,这意味着我们不必使用Browserify来转换代码 我知道Electron的一个含义是,你可以使用web技术构建跨平台的桌面应用程序。我也理解为什么我们能够写入文件系统,是因为Electron已经加入了节点。另外,我们之所以能够使用HTML/CSS/JS/DevTools,是因为铬是经过烘焙的。然而,我不认为这是作者所说的 Electron如何将节点和铬结合到一个“单一上下文”中 为什么不必再使用Brows

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

我知道Electron的一个含义是,你可以使用web技术构建跨平台的桌面应用程序。我也理解为什么我们能够写入文件系统,是因为Electron已经加入了节点。另外,我们之所以能够使用HTML/CSS/JS/DevTools,是因为铬是经过烘焙的。然而,我不认为这是作者所说的

  • Electron如何将节点和铬结合到一个“单一上下文”中
  • 为什么不必再使用Browserify了

Chromium是一款基于Webkit的web浏览器,带有V8 javascript引擎。它支持所有常用的浏览器和domapi,因此适合制作网页,而不适合与底层系统交互

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

Electron以一种简化的方式试图用新的更通用的Node.js引擎取代Chromium中使用的V8引擎。它向Node.js公开了一些额外的API,以允许打开Chromium窗口,但每个Chromium窗口都使用
标记将使用node.js引擎对其进行解释

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


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

因此在正常情况下,node.js和web浏览器是两个独立的上下文,而这就是为什么通常必须使用Browserify来“编译”Node.js代码,以便与web浏览器一起使用。

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

有了Electron,现代Web浏览器执行JavaScript的方式也差不多。有了Electron,Chromium被修改为能够执行Node。Electron是浏览器化,Electron是容器,它允许Node.js和Chromium一起工作,而无需任何进一步的修改或干预


因此,如果说Node和Chromium已经组合到一个上下文中,那么这意味着Node和Chomium能够像一体一样彼此工作和交互,而不需要任何其他工具或步骤来将两者“链接”在一起。

我认为这意味着代码当前运行的位置、服务器或服务器都没有区别所以你不应该这样写smthng:
if(typeof window==='object'){//code for browser