Node-Webkit与Electron

时间:2014-05-07 05:22:23

标签: node-webkit electron

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

他们之间有什么区别?

1 个答案:

答案 0 :(得分:70)

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中,网页中的节点集成需要修补   Chromium工作,而在Electron我们选择了不同的方式   将libuv循环集成到每个平台的消息循环中以避免黑客攻击   Chromium,请参阅node_bindings代码了解其完成方式。

     

4 - 多上下文

     

如果您是经验丰富的Node-Webkit用户,您应该很熟悉   通过Node上下文和Web上下文的概念,这些概念是   是因为Node-Webkit的实现方式而发明的。

     

通过使用Node的多上下文功能,Electron没有介绍   网页中新的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.js built in support for compiling your source code to protected binaries