【问题标题】:Node-Webkit vs Electron [closed]Node-Webkit vs Electron [关闭]
【发布时间】:2014-06-23 22:22:03
【问题描述】:

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

它们有什么区别?

【问题讨论】:

  • Electron 与 NW.js(2017 年 4 月)。 * 问题 E: 2,630 vs N: 269,Github pull requests E: 102 vs N: 6,基于Electron vs NW.js 构建的应用程序,最后是Google Trends - Electron 似乎是更好的选择。
  • 我选择了“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 集成在 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.* APIs 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 的 repo,因此可能略微偏向于 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。