【问题描述】:

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

问题在于,在功能集、兼容性等方面,三者之间似乎没有足够完整的比较。我希望将其变成(目标)上或多或少的规范线程) 三者之间的差异,尤其是:

  • 平台支持;操作系统、依赖项等
  • 语言功能支持,就 HTML5、CSS3 和 JavaScript 而言。想想诸如“HTML5 视频是否有效,如果是,有哪些可用的编解码器?”
  • 非标准的额外功能,例如托盘图标、弹出通知和操作系统呈现的菜单栏。
  • 可扩展性;例如。 “插入”本机代码、与 Node.js 对话等的能力。
  • 架构;尤其是影响开发者日常使用的架构差异。
  • 调试;包括开发工具,与node-inspector等常用工具的兼容性
  • ...等等。

作为应用程序开发人员在它们之间做出选择时,重要的客观技术差异是什么?

【问题讨论】:

  • 在此期间您是否有幸查看过这些差异?这个周末可能会挖一些东西
  • @stefan 还没有,没有:/我已经在实际意义上对 node-webkit 进行了一些试验,但还没有超越。还没有开始寻找差异的正式文档......
  • 好吧,这里是 atom-shell 团队 github.com/atom/atom-shell/blob/master/docs/development/… 概述的 node-webkit 和 atom-shell 之间的主要区别。
  • 房间里的大象怎么样:调试。一直在用nw.js,发现用linux平台开发的时候调试还是比较欠缺的。要开发大型应用程序,调试是 IMO 的一项关键功能。我们可以将调试添加到要与之交谈的理想功能列表中吗?
  • @JavaScriptDude 谢谢,我已将其添加到列表中。

标签: html node-webkit electron brackets-shell


【解答1】:

大约两个月前我做了类似的研究,最后我选择了 node-webkit。 node-webkit 的最大优点是 node.js 和 npm。 npm的包管理真的很好,node对文件系统的访问也做得很好。

Brackets-shell 看起来很有趣,但除了一个不错的 IDE 之外,我并没有真正理解是什么让这个 IDE 和其他的一样好或更好。他们很清楚“括号壳只维护给 Brackets 项目使用”,这让我尖叫起来。

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

Atom-shell 似乎最近很活跃,但它看起来很像括号,因为它们实际上是在编写和编辑器/IDE,恰好附加到 webkit 运行时。它也是建立在 node.js 之上的。这个有一个缺点,就是很难在网上搜索东西而不被提醒你的中学化学。

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

这些事情对他们三个都是真的 平台 - 在 Windows、Mac 和 Linux 上运行 语言支持 - HTML5、CSS3 和 Javascript:由于它们运行 javascript,您几乎可以下载和运行任何您想要的库/框架。

webkit 的一大警告是编解码器支持。通常,您会遇到非自由视频编解码器的问题,除非您重建 dll/so 以支持它们。例如,附带的 node-webkit 不会播放 mp4 视频。

【问题讨论】:

  • 能否详细说明括号壳和原子壳MP4播放有什么区别?从您的回答中不清楚这是大多数 WebKit 发行版中的怪癖,还是仅在 node-webkit 中。
  • MP4 播放问题是 webkit 问题。你必须记住,webkit 的核心是铬,除非 AV 技术是开放和免费的,否则他们不会开箱即用地支持它。标准答案是替换/重建 ffmpegsumo。用您当前安装的 Chrome 中的一个替换它似乎效果很好。
  • 碰巧 Brackets 建立在 bracket-shell 之上,而 Atom 建立在 atom-shell 之上,但你可以使用任何编辑器或选择使用它们创建代码的 IDE。我认为 OP 想要的更多是 3 之间的技术差异。在 3 个类似运行时的环境中看到类似 TodoMVC 的东西会很高兴。
  • @SvenSlootweg 编解码器支持更多关于与您正在使用的 webkit 一起使用的库。三者都使用 Chromium 作为 webkit 基础,因此它们都有相同的编解码器问题,并且可以通过相同的方式解决。
【解答2】:

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

关于它的最好的部分是它得到了 GitHub 的支持......这应该能让你长期适应这个平台,特别是如果它获得了大量的追随者。通过与 StrongLoop 签订的合同直接对 Node.js 进行改进也使之成为可能,他是 Node.js 的主要贡献者(他们声称雇用的 Node.js 核心开发人员比任何其他公司都多,甚至乔伊特)。

我还发现开始使用起来很舒服。我花了大约一天的时间来学习结构并运行我的第一个概念证明。很酷。


要点:

  • 平台支持:Windows、Linux、Mac OSX (More Info Here)
  • 语言功能支持: HTML5、CSS3、JS 通过 Chromium - 到目前为止,零问题,但我还没有专门测试视频。
  • 本机功能:本机应用程序菜单、任务托盘支持、全局热键、协议处理程序支持(我目前看到的)
  • 可扩展性: 出色的 Node.js 集成,客户端和服务器都可以“需要”Node.js 模块和原生模块。我还成功地测试了 Bower 库(包括 jQuery),没有出现问题。
  • 架构:涵盖了其他方面,但总体而言非常流畅。

更新(14 年 11 月 25 日):我还没有找到任何官方身份的 Atom-Shell 用例,但我已经用它为我自己构建了一些小应用程序使用,最复杂的是一个应用程序,它从我的 PM 软件中提取我的时间日志并创建 Paypal 发票。

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

在我的时间发票应用程序中,我成功地引入了 Bootstrap 3 的 Dashboard Example Template 和一些节点模块(bluebird、Paypal SDK、Teamwork PM Client)来创建一个稍微复杂的应用程序。我花了几天的时间,并且完成了它的工作。

我真的想不出任何关于 Atom-Shell 的负面评价,它可靠、稳定、快速且易于编码。我希望这对某人有所帮助。

【问题讨论】:

  • 您能具体说明一下与 node-webkit 的区别吗?据我所知,所有(大部分?)这些点也由 node-webkit 提供,但我不确定是否有我遗漏的东西。
  • 您好 luke 是否可以自行更新 atom-shell 应用程序...?
  • @SvenSlootweg 抱歉,我错过了几个月前的评论;不幸的是,我不熟悉 node-webkit,无法有效地比较两者。但我确实读过this StrongLoop article,这至少表明 Atom-Shell 开辟了新天地。 :\
  • @MunishKapoor 对于开发?您可以下载最新版本。我或多或少只是重命名旧的 atom 目录并将其替换为新的。他们可能有一些时髦的过程,比如“npm update”——但我没有调查过。为了在客户端更新您的 app+atom shell,我认为他们没有直接(根本)解决这个问题,并且大概希望您为此使用安装程序或其他外部平台。不过,我确实发现this article in their docs 很有趣。
  • @Moonwalker 是的,它使用名为“Asar”的应用程序进行包装。 (见:"Application Packaging")。我也刚发现这个Node-Webkit/Atom-Shell comparison
【解答3】:

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

在 wiki 中有更多内容可查看,包括菜单、托盘等。

【问题讨论】:

  • +1 在 Kiosk 模式罗杰。我可以看到这是我将来会使用的功能。希望调试能力有所提高,这样我就可以继续使用 nw.js,但是现在我正在认真考虑暂时切换到 Atom Electron 来试水。我发现 nw.js 中的调试有点欠缺。
  • 我有点担心在那里包含“保护 JS 源代码”——它与 DRM 属于同一类,从某种意义上说它不起作用。它只会“保护”那些你一开始就不需要“保护”的人。对我来说,这似乎不应该被宣传为一项功能。
  • @JavaScriptDude 你是说开发工具吗?在下一个版本 (0.13) 中,体验将与 Chrome 浏览器几乎相同。
  • @Roger。回复较晚,抱歉。是的,开发工具。我发现存在以下限制,其中一些可能在 devtools 本身中:1) 没有启动新窗口的调试。 2)远程调试从未奏效。 3) 无法调用断点、观察变量和打开的源(每次重新启动应用程序,所有设置都被清除)4)(真正的大问题)无法调试使用 require() 加载的代码。
【解答4】:

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

  • brackets-shell 主要是作为括号 IDE 项目下的 shell 开发的,但该项目可以运行任何 Web 应用程序。您只需要将其指向您自己的 html 页面。克林特贝瑞写了一篇关于这样做的优秀教程:http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • 该项目得到了 Adob​​e 的支持,并且有很多活动
  • 文档可能会更好

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

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

【问题讨论】:

  • 让我远离 Brackes-shell 的是他们自己的概述。 github.com/adobe/brackets-shell "注意:括号壳只维护供 Brackets 项目使用。虽然有些人肯定已经成功地将它用作其他项目的应用程序壳,但我们不提供任何官方支持,我们还没有没有做大量的工作来使 app shell 易于重用。许多人可能会发现使用像 node-webkit 这样的项目更容易,它在设计上更通用。”
【解答5】:

有一点需要注意(如果你关心的话),Electron 正式不支持 Windows Vista。 Vista的市场份额约为halfway between OSX 10.9 and 10.10(两者均由Electron全面支持)。直到 2017 年,微软仍然支持 Vista。

NW.js 在 Vista 和 OSX 10.9+ 中运行良好。 NW.js 适用于 Ubuntu、Debian、Zorin、Manjaro、Arch 和大多数其他基于 Debian 的 Linux 操作系统。 Electron 已拒绝 PR 修复其平台上的 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 操作系统,例如 Ubuntu 和 Win XP+。建议您只为那些遗留系统进行特殊构建,并为较新的操作系统使用较新版本的 NW.js。

【问题讨论】: