Node-Webkit与Electron

Fiz*_*han 74 node-webkit electron

我们计划构建跨平台桌面应用程序.我们发现Node-Webkit是我们的完美选择.但GitHub开发了自己的框架,称为Electron,而不是使用Node-Webkit.

他们之间有什么区别?

小智 74

Electron有一个页面解释与node-webkit的不同之处:

https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md

与Node-Webkit一样,Electron提供了一个用JavaScript和HTML编写桌面应用程序的平台,并且具有Node集成以授予对网页中低级系统的访问权限.

但是这两个项目之间也存在根本区别,这使得Electron成为与Node-Webkit完全独立的产品:

1 - 申请的进入

在NW.js中,应用程序的主要入口点是网页或JS脚本.您在package.json中指定html或js文件,并在浏览器窗口中打开它作为应用程序的主窗口(如果是html入口点)或执行脚本.

在Electron中,入口点是JavaScript脚本,而不是直接提供URL,您需要手动创建浏览器窗口并使用相应的API加载html文件.您还需要监听窗口事件以决定何时退出应用程序.

所以Electron更像Node.js运行时,而API更低级,你也可以使用Electron进行web测试,如phantomjs,

2 - 构建系统

为了避免构建整个Chromium的复杂性,Electron使用libchromiumcontent访问Chromium的Content API,libchromiumcontent是一个包含Chromium Content模块及其所有依赖项的共享库.因此用户不需要强大的机器来构建原子壳.

3 - 节点集成

在Node-Webkit中,网页中的节点集成需要修补Chromium才能工作,而在Electron中我们选择了一种不同的方式将libuv循环集成到每个平台的消息循环以避免攻击Chromium,请参阅node_bindings代码了解如何完成.

4 - 多语境

如果您是经验丰富的Node-Webkit用户,您应该熟悉Node上下文和Web上下文的概念,这些概念是由于Node-Webkit的实现方式而发明的.

通过使用Node的多上下文功能,Electron不会在网页中引入新的JavaScript上下文.

源代码保护

Electron正在使用asar打包其应用程序,其中包含应用程序的不受保护的源代码.这使得应用程序1可以在用户不知情的情况下提取应用程序2并注入易受攻击的脚本.您可以在GitHub上查看此项目,以查看如何操作Slack应用程序的示例.至于现在,Electron团队没有任何实施源代码保护支持的计划.

NW.js已经内置支持编译源代码保护的二进制文件.

  • 这篇文章可能略微偏向于Electron,因为这篇文章来自Electron的回购. (66认同)
  • 我实际上最近尝试过使用它们,我写了一篇关于它的[博客文章](http://my2iu.blogspot.com/2017/06/nwjs-vs-electron.html).我发现nw.js实际上比Electron更简单,更容易使用.只需要一些网页并将它们放入nw.js就可以了.Electron设置起来比较混乱,而且它们的多进程设计意味着你必须跳过篮球甚至做直接的事情.Electron拥有更丰富的平台集成API,允许您在应用程序中更广泛地使用本机Mac/Windows/Linux功能. (14认同)
  • nw.js可以开箱即用地运行Chrome应用程序.这对于许多程序员来说很有价值,他们的Chrome Webstore上的应用程序很快就会成为孤儿. (7认同)
  • 我也发现NW.js浏览器首先使用Node.js添加设计比Electron的Node.js方法更加安全和易于使用,并且浏览器支持在顶部.使用NW.js我正在为浏览器编码,Electron我正在为Node.js编码. (3认同)
  • 现在node-webkit被重命名为NW (2认同)