首页 文章

Node-Webkit与Electron [关闭]

提问于
浏览
63

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

他们之间有什么区别?

1 回答

  • 66

    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进行web测试,如phantomjs,2 - Build系统为了避免构建整个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上下文 .

    Source code protection

    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 .

相关问题