与 NW.js 相似,Electron 供应了一个能通过 JavaScript 和 HTML 创建桌面运用的平台,同时集成 Node 来付与网页访问底层系统的权限。

但是这两个项目也有实质上的差异,使得 Electron 和 NW.js 成为两个相互独立的产品。

1. 程序的入口

jspnodewebkitElectron 和 NWjs 原名 nodewebkit 在技巧上的差别 Python

在NW.js中,运用的主入口是网页或者JS脚本。
须要在package.json中指定一个html或者js文件,一旦运用的主窗口(在html作为主入口点的情形下)或脚本被实行,运用就会在浏览器窗口打开。

在 Electron 中,入口是一个 JavaScript 脚本。
不同于直接供应一个URL,你须要手动创建一个浏览器窗口,然后通过 API 加载 HTML 文件。
你还可以监听窗口事宜,决定何时让运用退出。

Electron 的事情办法更像 Node.js 运行时。
Electron 的 APIs 更加底层,因此你可以用它替代 PhantomJS 做浏览器测试。

2. 构建系统

为了避免构建全体 Chromium 带来的繁芜度,Electron 通过 libchromiumcontent 来访问 Chromium 的 Content API。
libchromiumcontent 是一个独立的、引入了 Chromium Content 模块及其所有依赖的共享库。
用户不须要一个强劲的机器来构建 Electron。

3. Node 集成

在 NW.js,网页中的 Node 集成须要通过给 Chromium 打补丁来实现。
但在 Electron 中,我们选择了另一种办法:通过各个平台的循环与 libuv 的循环集成,避免了直接在 Chromium 上做改动。
你可以查看 node_bindings 来理解这是如何完成的。

4. 多高下文语境

如果你是有履历的 NW.js 用户,你该当会熟习 Node 高下文和 web 高下文的观点。
这些观点的产生源于 NW.js 的实现办法。

通过利用Node的multi-context(多高下文)特性,Electron不须要在网页中引入新的Javascript高下文。

把稳: 自从 0.13 以来,NW.js 选择性支持多高下文。