NW.js,Brackets-Shell和Electron之间的function差异是什么?

既然TideSDK实际上已经死了,我一直在寻找替代的“包装”来运行HTML / CSS / JS应用程序作为独立的桌面应用程序。 到目前为止,我已经运行的三个可行选项是NW.js (以前称为node-webkit), 括号shell和Electron (以前称为primefacesshell)。

问题是,在function集,兼容性等方面似乎没有足够完整的三者之间的比较。我希望把它变成一个或多或less规范的线程上的(客观)差异三,特别是关于:

  • 平台支持 ; 操作系统,依赖关系等
  • 语言function支持 ,就HTML5,CSS3和JavaScript而言。 认为像“HTML5video工作,如果是的话,什么编解码器可用?
  • 非标准的额外function ,如托盘图标,popup通知和OS渲染的菜单栏。
  • 可扩展性 ; 例如。 能够“插入”本地代码,与Node.js交谈等等。
  • build筑学 ; 尤其是影响作为开发人员日常使用的体系结构差异。
  • debugging ; 包括开发工具,与node-inspector等常用工具的兼容性。
  • … 等等。

在作为应用程序开发人员进行select时,什么是客观的,技术上的差异呢?

我在两个月前做了类似的研究,最后我去了node-webkit。 node-webkit最大的优势是node.js和npm。 npm的软件包pipe理非常好,节点已经完成文件系统访问。

Brackets-shell看起来很有趣,但除了一个漂亮的IDE之外,我并没有真正弄清楚这个东西比其他的好。 他们非常清楚,“括号内的shell只能用于Brackets项目”,尖叫声就跑到了我的面前。

https://github.com/adobe/brackets-shell#overview

Atom-shell似乎最近处于活动状态,但它似乎很像括号,因为它们实际上只是写入和编辑器/ IDE,而恰好附加到Webkit运行时。 它也build立在node.js之上 这一个有难以在网上search的东西不提醒你的中学化学的缺点。

我真的不想要一个新的编辑器,大多数程序员已经有了他们的最爱。 对于实际的应用程序开发,他们几乎都是一样的,应该,因为他们都使用webkit。 你基本上把它的90-95%写成一个网站,然后处理原生的部分和一些configuration。

这些事情对于所有三种平台都是正确的 – 在Windows,Mac和Linux语言支持上运行–HTML5,CSS3和Javascript:因为它们运行javascript,所以可以下载和运行几乎任何你想要的库/框架。

webkit的重大警告是编解码器的支持。 通常情况下,你会遇到非免费的video编解码器的问题,除非你重buildDLL /以支持他们。 例如,发货的node-webkit将不会播放mp4video。

过去几天我一直在玩“ primefaces壳”Atom-Shell) ,到目前为止我都很喜欢它。

最好的部分是它是由GitHub支持的,它应该让你长期进入平台,特别是如果它获得了大量的关注。 也可以通过与StrongLoop的合同直接获得Node.js的改进,而StrongLoop是一个主要的Node.js贡献者(他们声称雇用了比任何其他公司,甚至Joyent更多的Node.js核心开发者)。

我也觉得它开始很舒服。 花了我大约一天的时间来学习结构,并得到我的第一个概念validation运行。 很酷。


子弹点:

  • 平台支持: Windows,Linux,Mac OSX( 更多信息在这里 )
  • 语言function支持:通过Chromium的HTML5,CSS3,JS – 到目前为止,零问题,但我没有专门testingvideo。
  • 本机function:本地应用程序菜单,任务托盘支持,全局热键,协议处理程序支持(迄今为止我见过)
  • 可扩展性:优秀的Node.js集成,客户端和服务器都可以“需要”Node.js模块和本机。 我也成功地testing了Bower库(包括jQuery),没有问题。
  • build筑:覆盖在其他方面,但总的来说非常顺利。

更新(11/25/14):我还没有find任何官方的Atom-Shell用例,但是我已经用它来构build一些我自己使用的小应用程序,最复杂的是一个应用程序拉我的PM软件的时间日志,并创buildPayPal发票。

我对平台的看法仍然是积极的。 这真是太棒了。

在我的时间发票应用程序中,我成功地引入了Bootstrap 3的仪表板示例模板和几个节点模块(蓝鸟,Paypal SDK,Teamwork PM Client),以创build一个稍微复杂的应用程序。 我花了几天时间,做得很好。

对于Atom-Shell,它的稳定,稳定,快速和易于编写,我真的想不出任何负面的东西。 我希望这可以帮助别人。

除了完全支持Web标准之外,NW.js还支持本地应用程序开发的非标准function列表,包括:

  • 通过将JS源代码编译成机器码来保护它: https : //github.com/nwjs/nw.js/wiki/Protect-JavaScript-source-code-with-v8-snapshot
  • Jailed devtools: https : //github.com/nwjs/nw.js/wiki/Devtools-jail-feature
  • 您可以在DOM中使用更多的安全模型: https : //github.com/nwjs/nw.js/wiki/Security https://github.com/nwjs/nw.js/wiki/Changes-to-DOM
  • 增强的文件对话框: https : //github.com/nwjs/nw.js/wiki/File-dialogs
  • 信息亭模式: https : //github.com/nwjs/nw.js/wiki/The-Kiosk-mode
  • 支持越来越多的chrome * API,包含chrome.webRequest,以便拦截来自DOM的HTTP请求: https : //github.com/nwjs/nw.js/issues/518
  • 支持丰富的通知,打印预览,更多chrome。* API,Chrome应用程序和其他Chromiumfunction从0.13.0-alpha0

在维基上还有更多的东西,包括Menu,Tray等。

我已经使用了一段时间的括号shell,下面是我的一些发现:

  • brackets-shell主要是在方括号IDE项目下开发的,但是该项目可以运行任何Web应用程序。 你只需要把它指向你自己的html页面。 克林特贝里写了一个很好的教程,做到这一点: http : //clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • 该项目由Adobe支持,并有很多活动
  • 文档可能会更好

  • 平台支持他们支持Windows,Mac和Linux。 安装程序包也可以创build。 我只在Win和Mac上testing过,效果很好。

  • function支持 html5,css3,js。 Html5video无法正常工作,但很容易启用(默认情况下,ffmpegsumo.dll不会复制到安装程序中,如果您更改脚本以复制它,它将起作用)。
  • 原生function菜单栏,“打开文件”,文件系统访问。 我没有使用任何这些,因为我需要的是与节点进程的通信。
  • nodejs内置的可扩展性 ,您可以从Web应用程序与节点进行通信。 这样,你可以使用节点来访问文件系统等
  • 架构该项目设置得很好,在shell项目和运行在其中的自己的web应用程序之间保持良好的分离。 在您自己的应用程序中,可以使用全局的appshell对象,这使得您可以访问括号function(文件系统访问,与节点进程的通信…)。

有一件事要注意(如果你关心的话)是Electron官方不支持Windows Vista。 Vista的市场份额大约在OSX 10.9和10.10之间 (这两者都得到了Electron的全力支持)。 微软仍然支持Vista,直到2017年。

NW.js在Vista中工作正常,以及OSX 10.9+。 NW.js适用于Ubuntu,Debian,Zorin,Manjaro,Arch和大多数基于Debian的Linux操作系统。 Electron已经拒绝了PR的解决scheme来修复Ubuntu的具体bug。

NW.js也在XP中运行。 目前市场上仍有18%仍在使用XP。 所以,如果你的桌面应用程序是更通用的,或者希望能够访问仍然在XP上的后期采用者,那么你最好使用NW.js(0.14.7),因为Electron只支持Win 7以上版本。

如果你使用的是NW.js 0.12.3,你也可以支持OSX 10.6+以及Debian的Linux操作系统,比如Ubuntu和Win XP +。 build议您针对这些遗留系统进行特殊构build,并为较新的操作系统使用较新版本的NW.js。