【问题描述】:

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

它们之间有什么区别?

【问题讨论】:

  • Electron 与 NW.js(2017 年 4 月)。 Stackoverflow 问题E: 2,630N: 269,Github 拉取请求E: 102N: 6,基于ElectronNW.js 构建的应用程序,最后Google Trends 似乎是更好的选择。
  • 我选择了“nw.js”,因为我可以将它指向我的“index.html”,它就可以正常工作。使用“nw.js”,我觉得我正在为添加了“node.js”而不是“node.js”的浏览器编程,浏览器固定在“Electron”的顶级方法上 - 在我看来这是更好的范例和方法。
  • xpda.net 提供了包括 NW.js 和 Electron 在内的几十种工具的快速优缺点列表。可以通过技术和平台支持过滤。

标签: node-webkit electron


【解答1】:

Electron 有一个page 解释了与 nwjs 的区别。

与 NW.js 一样,Electron 提供了一个平台来编写桌面应用程序 与网络技术。这两个平台都使开发人员能够利用 HTML、JavaScript 和 Node.js。从表面上看,它们非常相似。

然而,这两个项目之间存在根本差异 使 Electron 成为一个完全独立于 NW.js 的产品。

  1. 应用程序入口 在 NW.js 中,应用程序的主要入口点 应用程序可以是 HTML 网页。在这种情况下,NW.js 将打开 浏览器窗口中的给定入口点。

在 Electron 中,入口点始终是 JavaScript 脚本。代替 直接提供 URL,您手动创建浏览器窗口并 使用 API 加载 HTML 文件。你还需要听窗口 决定何时退出应用程序的事件。

Electron 更像 Node.js 运行时。 Electron 的 API 是 较低级别,因此您可以将其用于浏览器测试,而不是 PhantomJS。

  1. Node Integration 在 NW.js 中,网页中的 Node 集成 需要修补 Chromium 才能工作,而在 Electron 中我们选择了一个 将 libuv 循环与每个平台的消息集成的不同方式 循环以避免黑客入侵 Chromium。请参阅 node_bindings 代码了解如何 大功告成。

  2. JavaScript 上下文如果你是一个有经验的 NW.js 用户,你 应该熟悉Node上下文和web上下文的概念。 这些概念是由于 NW.js 的实现方式而发明的。

通过使用Node的多上下文特性,Electron没有引入 网页中的新 JavaScript 上下文。

注意:NW.js 从 0.13 开始可选地支持多上下文。

  1. 遗留支持 NW.js 仍然提供一个“遗留版本”,支持 视窗 XP。它不接收安全更新。

鉴于硬件制造商、Microsoft、Chromium 和 Node.js 甚至还没有发布该系统的关键安全更新,我们 必须警告你,使用 Windows XP 是非常不安全和彻底的 不负责任。

然而,我们了解我们最疯狂的要求 想象力可能存在,所以如果你正在寻找类似的东西 在 Windows XP 上运行的 Electron,NW.js 旧版本可能是 适合您。

  1. 特点 支持的数量有很多差异 特征。 Electron 拥有更大的社区,更多的生产应用程序使用 它,以及 npm 上提供的大量用户空间模块。

例如,Electron 内置了对自动更新和 无数的工具使安装程序的创建更容易。作为 例如支持 NW.js,NW.js 支持更多 Chrome.* API Chrome 应用的开发。

当然,我们相信 Electron 是更好的平台 使用 Web 技术构建的精美生产应用程序(例如 Visual Studio Code、Slack 或 Facebook Messenger);然而,我们想要 公平对待我们的网络技术朋友。如果您有功能需要 Electron 不满足,你可能想试试 NW.js。

请记住,这可能有偏见 - 它来自 Electron 的 wiki 页面。

电子不引入

网页中的新 JavaScript 上下文。

源代码保护

Electron 正在使用 asar 打包其应用程序,其中包含应用程序未受保护的源代码。这使得应用程序 1 可以在用户不知情的情况下提取应用程序 2 并注入易受攻击的脚本。您可以查看this project on GitHub to see an example of how to manipulate the Slack app 作为示例。至于现在,the Electron team don't have any plans to implement support for source code protection

NW.jsbuilt in support for compiling your source code to protected binaries

【问题讨论】:

  • 现在 node-webkit 更名为 NW
  • 本文可能会略微偏向于 Electron,因为本文来自 Electron 的存储库。
  • nw.js 可以开箱即用地运行 Chrome 应用程序。这对许多程序员来说很有价值,他们在 Chrome Webstore 上的应用很快就会成为孤儿。
  • 实际上我最近尝试同时使用两者,我写了一篇关于它的blog post。我发现 nw.js 实际上比 Electron 更简单易用。只需将一些网页放入 nw.js 中就可以了,这是相当容易的。 Electron 设置起来更麻烦,它们的多进程设计意味着你必须跳过箍甚至做直截了当的事情。不过,Electron 拥有更丰富的平台集成 API,允许您在应用程序中更广泛地使用原生 Mac/Windows/Linux 功能。
  • 我还发现 NW.js 浏览器首先添加了 Node.js,其设计比 Electron 的 Node.js 方法更明智、更容易工作,浏览器支持固定在顶部。使用 NW.js 为浏览器编码,使用 Electron 为 Node.js 编码。