82

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

它们之间有什么区别?

4

1 回答 1

80

Electron 有一个页面解释与nwjs.

与 NW.js 一样,Electron 提供了一个使用 Web 技术编写桌面应用程序的平台。这两个平台都使开发人员能够利用 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. 节点集成 在 NW.js 中,网页中的节点集成需要修补 Chromium 才能工作,而在 Electron 中,我们选择了一种不同的方式将 libuv 循环与每个平台的消息循环集成,以避免入侵 Chromium。请参阅node_bindings代码以了解如何完成。

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

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

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

  1. 旧版支持 NW.js 仍然提供支持 Windows XP 的“旧版”。它不接收安全更新。

鉴于硬件制造商 Microsoft、Chromium 和 Node.js 甚至还没有发布针对该系统的关键安全更新,我们不得不警告您,使用 Windows XP 非常不安全并且完全不负责任。

但是,我们知道可能存在超出我们想象的要求,因此如果您正在寻找像 Electron 这样在 Windows XP 上运行的东西,NW.js 旧版本可能适合您。

  1. 功能 支持的功能数量存在许多差异。Electron 拥有更大的社区,更多的生产应用程序使用它,并且 npm 上提供了大量的用户空间模块。

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

自然地,我们认为 Electron 是使用 Web 技术(如 Visual Studio Code、Slack 或 Facebook Messenger)构建的完善的生产应用程序的更好平台;但是,我们希望对我们的网络技术朋友公平。如果您有 Electron 无法满足的功能需求,您可能想尝试 NW.js。

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

电子不引入

网页中的新 JavaScript 上下文。

源代码保护

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

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

于 2014-05-07T07:43:51.987 回答