我们计划构建跨平台的桌面应用程序。我们发现Node-Webkit是我们的理想选择。但是GitHub开发了自己的名为Electron的框架,而不是使用Node-Webkit。
它们之间有什么区别?
Answers:
Electron的页面解释了node-webkit的不同之处:
https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md
与Node-Webkit一样,Electron提供了一个使用JavaScript和HTML编写桌面应用程序的平台,并具有Node集成功能,以授予对网页中低级系统的访问权限。
但是,这两个项目之间也存在根本差异,这使Electron成为与Node-Webkit完全独立的产品:
1-申请表
在NW.js中,应用程序的主要入口点是网页或JS脚本。您可以在package.json中指定一个html或js文件,并在浏览器窗口中将其打开为应用程序的主窗口(如果是html入口点)或执行脚本。
在Electron中,入口点是JavaScript脚本,而不是直接提供URL,而是需要手动创建浏览器窗口并使用相应的API在其中加载html文件。您还需要监听窗口事件以决定何时退出应用程序。
因此,Electron的工作方式更像Node.js运行时,而API则更底层,您也可以将Electron用作phantomjs,
2-构建系统
为了避免构建整个Chromium的复杂性,Electron使用libchromiumcontent访问Chromium的Content API,libchromiumcontent是一个包含Chromium Content模块及其所有依赖项的共享库。因此,用户不需要强大的机器来构建原子外壳。
3-节点整合
在Node-Webkit中,网页中的Node集成需要修补Chromium才能起作用,而在Electron中,我们选择了一种不同的方式将libuv循环集成到每个平台的消息循环中,以避免对Chromium造成黑客入侵,有关如何操作,请参见node_bindings代码。
4-多上下文
如果您是经验丰富的Node-Webkit用户,则应该熟悉Node上下文和Web上下文的概念,这些概念是由于Node-Webkit的实现方式而发明的。
通过使用Node的多上下文功能,Electron不会在网页中引入新的JavaScript上下文。
源代码保护
Electron正在使用asar打包其应用程序,其中包含应用程序的不受保护的源代码。这使应用程序1可以提取应用程序2并注入易受攻击的脚本,而无需用户知道。您可以在GitHub上签出该项目,以查看有关如何操作Slack应用程序的示例。到目前为止,Electron团队还没有任何计划实现对源代码保护的支持。
NW.js已经内置支持编译源代码保护的二进制文件。