NW.js,Brackets-Shell和Electron之间的功能区别是什么?


151

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

问题在于,在功能集,兼容性等方面,这三者之间似乎没有足够完整的比较。我希望根据两者之间的(客观)差异,将其转变为一个或多或少的规范线程。这三个,特别是关于:

  • 平台支持 ; 操作系统,依赖项等
  • 语言功能支持,就HTML5,CSS3和JavaScript而言。想一想“ HTML5视频是否可以正常工作,如果可以,可以使用哪些编解码器?”
  • 非标准的额外功能,例如任务栏图标,弹出通知和OS渲染的菜单栏。
  • 可扩展性 ; 例如。能够“插入”本机代码,与Node.js对话等。
  • 建筑 ; 特别是影响每天作为开发人员使用的架构差异。
  • 调试 ; 包括开发工具,与常用工具(如)的兼容性node-inspector等。
  • ... 等等。

在作为应用程序开发人员之间做出选择时,客观的,技术上的区别又有什么关系?


在此期间,您是否有运气来看看差异?这个周末可能会挖一些东西
stefan 2014年

@stefan还没有,没有:/我已经从实际意义上对node-webkit进行了一些试验,但是还没有超出范围。还没有到处寻找差异的正式文档……
Sven Slootweg 2014年

3
好吧,这是atom-shell团队(github.com/atom/atom-shell/blob/master/docs/development/…)概述的node-webkit和atom-shell之间的主要区别。
2014年

2
房间里的大象怎么样:调试。我一直在使用nw.js,发现在使用linux平台进行开发时调试非常缺乏。为了开发大型应用程序,调试是IMO的一项重要功能。我们可以将调试添加到要交谈的理想功能列表中吗?
蒂莫西·奎因

@JavaScriptDude谢谢,我已将其添加到列表中。
Sven Slootweg 2015年

Answers:


42

大约两个月前,我进行了类似的研究,最后我使用了node-webkit。node-webkit的最大优势在于node.js和npm。npm的软件包管理非常好,并且节点可以很好地访问文件系统。

Brackets-shell看起来很有趣,但是除了一个不错的IDE之外,我并没有真正得到使它比其他同类产品更好或更好的东西。他们非常清楚,“仅在Brackets项目中维护了方括号-shell,”尖叫声让我无所适从。

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

Atom-shell似乎最近很活跃,但是它似乎很像括号,因为它们实际上是在编写和与Webkit运行时相关的Editor / IDE。它还建立在node.js之上。缺点是难以在线上搜索东西,而又不会想起您的中学化学。

我真的不想要一个新的编辑器,并且大多数程序员已经有了他们的最爱。对于实际的应用程序开发,它们几乎都是相同的,并且应该工作,因为它们都使用webkit。您基本上像网站一样编写了90-95%的内容,然后处理本机部分和一些配置。

这一切对于这三个平台都是正确的-在Windows,Mac和Linux语言支持上运行-HTML5,CSS3和Javascript:由于它们运行的​​是javascript,因此您可以下载并运行几乎任何所需的库/框架。

Webkit的最大警告是对编解码器的支持。通常,除非使用dll / so来支持非免费视频编解码器,否则您会遇到问题。例如,出厂的node-webkit将无法播放mp4视频。


您能否详细说明一下在括号外壳和原子外壳中MP4播放方面是否有区别?从您的答案中尚不清楚这是大多数WebKit发行版中的怪胎,还是仅在node-webkit中。
Sven Slootweg 2014年

MP4播放出现问题是webkit的问题。您必须记住,webkit的核心确实是铬,除非AV技术是开放和免费的,否则他们将不支持它。标准答案是替换/重建ffmpegsumo。用您当前的Chrome安装中的一个替换它似乎效果很好。
约翰·克拉克

1
只是碰巧是在Brackets之上构建的,bracket-shell而Atom是在之上构建的atom-shell,但是您可以使用任何选择的编辑器或IDE来创建代码。我认为OP希望更多的是3之间的技术差异。在3个类似运行时的环境中看到类似TodoMVC的东西真是太好了。
Ehtesh Choudhury 2014年

@SvenSlootweg编解码器支持更多地与您正在使用的Webkit一起使用的库有关。这三个都使用Chromium作为Webkit的基础,因此它们都有相同的编解码器问题,并且可以通过相同的方式解决。
约翰·克拉克


40

在过去的几天里,我一直在与Atom-Shell一起玩,到目前为止,我一直很喜欢。

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

我也发现入门非常舒适。我花了一天的时间来学习结构并获得我的第一个概念证明。很酷。


项目符号:

  • 平台支持: Windows,Linux,Mac OSX(更多信息请点击此处
  • 语言功能支持:通过Chromium的HTML5,CSS3,JS-到目前为止,没有问题,但我还没有专门测试视频。
  • 本机功能:本机应用程序菜单,任务托盘支持,全局热键,协议处理程序支持(到目前为止,我已经看到过)
  • 可扩展性:出色的Node.js集成,客户端和服务器都可以“需要” Node.js模块和本机。我还成功地测试了Bower库(包括jQuery),没有任何问题。
  • 体系结构:在其他方面进行了介绍,但总体来说非常流畅。

更新(11/25/14): 我还没有找到任何官方身份的Atom-Shell用例,但是我已经用它来构建了一些小应用供我自己使用,最复杂的是可以拉的应用我的时间从我的PM软件记录下来并创建Paypal发票。

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

在按时间计价的应用程序上,我成功引入了Bootstrap 3的仪表板示例模板和一些节点模块(bluebird,Paypal SDK,Teamwork PM Client)来创建一个稍微复杂的应用程序。我花了几天时间,做得很好。

对于Atom-Shell,它可靠,稳定,快速且易于编码,我真的想不出任何负面意见。我希望这可以帮助别人。


您能否详细说明与node-webkit的区别?据我所知,所有这些点(大多数?)也是由node-webkit提供的,但是我不确定是否可能缺少某些东西。
Sven Slootweg 2014年

嗨,卢克,是否有可能自我更新原子壳应用程序?
Munish Kapoor 2014年

@SvenSlootweg对不起,几个月前我错过了您的评论;不幸的是,我对Node-Webkit不太了解,无法有效地比较两者。但是我确实读过这篇StrongLoop文章,至少表明Atom-Shell开辟了新天地。:\
卢克·查弗斯

@MunishKapoor要发展吗?你可以下载最新版本。他们可能会有一些令人眼花process乱的过程,例如“ npm update”-但我尚未对其进行调查。为了在客户端上更新您的app + atom Shell,我认为他们根本没有直接解决此问题,并且大概希望您为此使用安装程序或其他外部平台。我确实在他们的文档中发现了这篇文章很有趣。
Luke Chavers 2014年

1
@Moonwalker是的,它使用一个名为“ Asar ” 的应用程序进行包装。(请参阅:“应用程序包装”)。我也刚刚发现了Node-Webkit / Atom-Shell的比较
卢克·查弗斯

22

除了完全支持Web标准之外,NW.js还支持一系列用于本机应用程序开发的非标准功能,包括:

Wiki中还有更多内容可供查看,包括菜单,纸盘等。


3
信息亭模式下的罗杰+1。我可以看到,这是我将来会使用的功能。希望调试功能有所改善,以便我可以继续使用nw.js,但是现在我正在认真考虑切换到Atom Electron一段时间以测试水域。我发现在nw.js中进行调试有点困难。
蒂莫西·奎因

我有点担心其中包含“保护JS源代码”-从某种意义上说,它与DRM在同一个类中。首先,它只是“保护”那些不需要“保护”的对象。似乎不应该作为我的功能来宣传。
Sven Slootweg 2015年

1
这不像Web上的DRM,JS程序员应该能够像C ++程序员一样做任何事情,包括在开发本机应用程序时将源代码编译为机器代码。
王恒

@JavaScriptDude是指devtools吗?在下一版本(0.13)中,体验几乎与Chrome浏览器相同。
王恒

@Roger。回复较晚,抱歉。是的,devtools。我发现存在以下限制,其中一些限制可能出现在devtools本身中:1)没有调试新的Windows。2)远程调试从未成功。3)无法调用断点,监视变量和打开的源(每次重新启动应用程序时,所有设置均被清除)4)(真正的大问题)无法调试通过require()加载的代码。
蒂莫西·奎因

10

我已经使用了括号-壳了一段时间,这是我的一些发现:

  • brackets-shell主要是作为brackets IDE项目下的shell开发的,但是该项目可以运行任何Web应用程序。您只需要将其指向您自己的html页面即可。克林特·贝里(Clint Berry)为此撰写了出色的教程:http//clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • 该项目由Adobe支持,并且有很多活动
  • 文档可能更好

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

  • 功能支持 html5,css3,js。Html5视频无法立即使用,但非常易于启用(默认情况下,ffmpegsumo.dll不会复制到安装程序中,如果您更改脚本以进行复制,它将可以使用)。
  • 本机功能菜单栏,“使用...打开文件”,文件系统访问权限。我没有使用任何这些,因为我所需要的只是与节点进程的通信。
  • 内置了nodejs的可扩展性,您可以从Web应用程序与node通信。这样,您可以使用节点访问文件系统等。
  • 体系结构该项目设置合理,可将Shell项目与内部运行的Web应用程序很好地隔离开来。在您自己的应用程序中,可以使用全局appshell对象,该对象使您可以访问方括号功能(文件系统访问,与节点进程的通信等)。

6
让我远离Brackes-shell的是他们自己的概述。 github.com/adobe/brackets-shell “注意:方括号-外壳仅供Brackets项目使用。尽管某些人肯定已经成功将其用作其他项目的应用程序外壳,但我们没有提供任何官方信息对此的支持,我们还没有做大量的工作来使应用程序外壳易于重用。许多人可能会发现使用诸如node-webkit这样的项目更容易,该项目在设计上更加通用。”
约翰·克拉克

5

需要注意的一件事是,Electron官方不支持Windows Vista。Vista的市场份额大约介于OSX 10.9和10.10(两者都由Electron完全支持)之间。直到2017年,Microsoft仍将支持Vista。

NW.js在Vista和OSX 10.9+中均可正常运行。NW.js可在Ubuntu,Debian,Zorin,Manjaro,Arch和大多数其他基于Debian的Linux操作系统上运行。Electron拒绝公关公司在其平台上修复与Ubuntu有关的特定错误。

NW.js也可以在XP中使用。目前18%的市场仍在XP上。因此,如果您的桌面应用程序用途更广泛,或者希望访问仍采用XP的较晚采用者,则最好使用NW.js(0.14.7),因为Electron仅支持Win 7及更高版本。

如果您使用NW.js 0.12.3,则还可以支持OSX 10.6+以及非常老版本的基于Debian的Linux OS,例如Ubuntu和Win XP +。但是,建议您仅针对那些旧系统进行特殊构建,并将NW.js的较新版本用于较新的OS。


1
Chrome浏览器并没有停止支持MS做之后-支持延长到2015年底- chrome.blogspot.com/2015/04/...
卡罗尔Klepacki

electronic(atom-shell)无法在RHEL 6.6及更低版本上运行,并且无法在这些发行版上编译源代码。
Michael Kruglos


您可以使用nw-builder创建MAS版本。NW.js也有一些构建
Jaredcheeda
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.