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具有内置支持将源代码编译为受保护二进制文件。