Node-Webkit与Electron的比较

83
我们计划开发跨平台桌面应用程序。我们发现Node-Webkit是我们的完美选择。但是GitHub开发了他们自己的框架Electron,而不是使用Node-Webkit。
它们之间有什么区别?

2
电子(Electron)与NW.js(N)(2017年4月)的比较。 Stackoverflow问题:E: 2,630 vs N: 269, Github拉取请求:E: 102 vs N: 6, 基于ElectronNW.js构建的应用程序,最后是Google Trends - Electron似乎是更好的选择。 - kinjelom
我选择了'nw.js',因为我只需要将它指向我的'index.html',它就可以正常工作。使用'nw.js'让我感觉像是在为一个带有'node.js'的浏览器编程,而不是像'Electron'那样将浏览器附加在'node.js'之上的方法 - 在我看来,这是更好的范例和方法。 - Daniel Sokolowski
好文章:http://tangiblejs.com/posts/nw-js-and-electron-compared-2016-edition - Daniel Sokolowski
1
https://xpda.net 提供了几十种工具的快速优缺点列表,包括 NW.js 和 Electron。可以按技术和平台支持进行过滤。 - Jaredcheeda
1个回答

81
Electron有一个page,解释了与nwjs的区别。
像 NW.js 一样,Electron 提供了一个平台来使用 web 技术编写桌面应用程序。这两个平台都允许开发人员利用 HTML、JavaScript 和 Node.js。表面上,它们似乎非常相似。然而,两个项目之间存在根本性的差异,这使得 Electron 成为一个完全独立的产品,而不是 NW.js 的变体。
1. 应用程序入口点: 在 NW.js 中,应用程序的主要入口点可以是 HTML 网页。在这种情况下,NW.js 将在浏览器窗口中打开给定的入口点。在 Electron 中,入口点始终是 JavaScript 脚本。你需要手动创建一个浏览器窗口,并使用 API 加载 HTML 文件,而不是直接提供 URL。你还需要监听窗口事件来决定何时退出应用程序。Electron 更像 Node.js 运行时。Electron 的 API 更低级,因此你可以在浏览器测试中使用它来代替 PhantomJS。
2. Node 集成: 在 NW.js 中,Web 页面中的 Node 集成需要修补 Chromium 才能正常工作,而在 Electron 中,我们选择了一种不同的方式将 libuv 循环与每个平台的消息循环集成在一起,以避免对 Chromium 进行黑客攻击。请参见 node_bindings 代码以了解如何完成这项工作。
3. JavaScript 上下文: 如果你是一个有经验的 NW.js 用户,你应该熟悉 Node 上下文和 Web 上下文的概念。这些概念是因为 NW.js 的实现方式而发明的。通过使用 Node 的多上下文特性,Electron 不会在 Web 页面中引入新的 JavaScript 上下文。
4. 旧版支持: NW.js 仍然提供支持 Windows XP 的“旧版发布”。它不会接收安全更新。考虑到硬件制造商、Microsoft、Chromium 和 Node.js 即使没有发布关键的安全更新,我们必须警告您使用 Windows XP 是极其不安全和不负责任的。然而,我们理解我们无法想象的要求可能存在,所以如果你正在寻找类似 Electron 在 Windows XP 上运行的东西,NW.js 旧版发布可能适合你。
5. 功能: 支持的功能数量存在许多差异。Electron 拥有更大的社区、更多生产应用程序的使用,并且有大量的用户模块可在 npm 上使用。例如,Electron 内置了自动更新支持和无数工具,使得安装程序的创建更容易。作为 NW.js 的优点之一,NW.js 支持更多 Chrome.* API,用于开发 Chrome 应用程序。当然,我们相信 Electron 是利用 web 技术构建 polished production 应用程序的更好平台(如 Visual Studio Code、Slack 或 Facebook Messenger);然而,我们希望公正对待我们的 web 技术朋友。如果你有 Electron 无法满足的功能需求,你可能需要尝试 NW.js。

请注意这可能有偏见-来源于Electron的维基页面。

Electron在网页中不会引入新的JavaScript上下文。

在网页中,Electron不会引入新的JavaScript上下文。

源代码保护

Electron将其应用程序与asar一起打包,其中包含应用程序的未受保护的源代码。这使得应用程序1可以提取应用程序2并注入易受攻击的脚本,而用户却不知道。您可以查看GitHub上的此项目,以了解如何操作Slack应用程序的示例。目前,Electron团队没有计划实现对源代码的保护支持

NW.js具有内置支持将源代码编译为受保护二进制文件


3
现在的node-webkit被更名为NW。 - Marwen Trabelsi
74
这篇文章来自Electron的仓库,因此可能会对Electron持有一些偏见。 - gbmhunter
7
nw.js 可以直接运行 Chrome 应用。这对于许多应用即将被遗弃的 Chrome Webstore 上的程序员来说非常有价值。 - marlar
18
我最近实际尝试了这两种框架,并撰写了一篇博客文章。我发现nw.js比Electron更简单易用,只需将某些网页放入nw.js即可轻松使用。而Electron则需要更麻烦的设置,他们的多进程设计意味着即使是直接的操作也需要费些周折。但是Electron拥有更丰富的平台集成API,允许您在应用程序中更广泛地使用本机Mac/Windows/Linux功能。 - Ming-Yee Iu
3
我发现NW.js浏览器结合Node.js的设计比Electron的Node.js支持补丁方式更加明晰和易于操作。使用NW.js时,我是在编写浏览器程序,而使用Electron时,我是在编写Node.js程序。 - Daniel Sokolowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接