现在TideSDK实际上已经死了,我've been looking into alternative '包装器将HTML / CSS / JS应用程序作为独立的桌面应用程序运行 . 到目前为止,我遇到的三个可行选项是NW.js(以前称为node-webkit),brackets-shell和Electron(以前称为atom-shell) .
问题是在功能集,兼容性等方面似乎没有足够完整的三者之间的比较 . 我希望将其转化为关于(客观)差异的或多或少的规范线程 . 三,特别是关于:
-
Platform support ;操作系统,依赖关系等
-
Language feature support ,就HTML5,CSS3和JavaScript而言 . 想想像"does HTML5 video work, and if yes, what codecs are available?"
-
Non-standard extra features ,例如托盘图标,弹出通知和OS渲染菜单栏 .
-
Extensibility ;例如 . 能够'plug in'本机代码,与Node.js交谈,等等 .
-
Architecture ;特别是影响开发人员日常使用的架构差异 .
-
Debugging ;包括开发工具,与
node-inspector
等常用工具的兼容性 . -
......等等 .
在作为应用程序开发人员进行选择时,重要的客观技术差异是什么?
5 回答
除了完全支持Web标准外,NW.js还支持本地应用程序开发的非标准功能列表,包括:
通过将JS源代码编译为机器代码来保护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
kiosk模式: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应用和其他Chromium功能,从0.13.0-alpha0开始
在Wiki中还有更多内容,包括菜单,托盘等 .
两个月前我做了类似的研究,最后我使用了node-webkit . node-webkit的最大优点是node.js和npm . npm的包管理非常好,节点已经完成了文件系统访问 .
Brackets-shell看起来很有趣,但除了一个不错的IDE之外,我并没有真正得到使得这个比其他更好或更好的东西 . 他们非常清楚“括号 - 贝壳仅供Brackets项目使用”,这些尖叫声让我感到震惊 .
https://github.com/adobe/brackets-shell#overview
Atom-shell似乎最近是活跃的,但它看起来很像括号,因为它们实际上是编写和编辑器/ IDE恰好附加到webkit运行时 . 它也 Build 在node.js之上 . 这个有一个缺点是难以在线搜索东西,而不会被提醒你的中学化学 .
我真的不想要一个新的编辑器,而且大多数程序员已经拥有了他们的最爱 . 对于实际的应用程序开发,它们几乎一样,并且应该,因为它们都使用webkit . 你基本上写了90-95%的网站,然后处理本机部分和一些配置 .
这些都适用于所有这三个平台 - 在Windows,Mac和Linux语言支持上运行 - HTML5,CSS3和Javascript:因为它们运行javascript,您可以下载并运行您想要的几乎任何库/框架 .
webkit的一大注意事项是编解码器支持 . 通常,您将遇到非免费视频编解码器的问题,除非您重建dll /以支持它们 . 例如,发货的node-webkit不会播放mp4视频 .
在过去的几天里我一直在玩 Atom-Shell ,到目前为止我很喜欢它 .
关于它的最好的部分是它也可以通过直接的Node.js改进来实现与 StrongLoop 的 Contract ,这是一个主要的Node.js贡献者(他们声称使用比任何其他公司更多的Node.js核心开发人员,甚至Joyent) .
我也发现开始时很舒服 . 我花了大约一天时间学习结构并获得第一个概念验证 . 很酷 .
子弹点:
Platform support: Windows,Linux,Mac OSX(More Info Here)
Language feature support: HTML5,CSS3,JS通过Chromium - 到目前为止,零问题,但我没有专门测试视频 .
Native Features: 本机应用程序菜单,任务托盘支持,全局热键,协议处理程序支持(到目前为止我见过)
Extensibility: 优秀的Node.js集成,客户端和服务器都可以"require" Node.js模块和本机 . 我也成功地测试了 Bower 库(包括jQuery) .
Architecture: 涵盖在其他点,但总的来说它非常顺利 .
Update (11/25/14): 我还没有找到任何官方容量的Atom-Shell用例,但是我用它来构建一些供我自己使用的小应用程序,最复杂的应用程序可以从我的PM软件中提取时间日志并创建Paypal发票 .
我对该平台的看法仍然是积极的 . 这太棒了 .
在我的发票应用程序上,我成功引入了Bootstrap 3的Dashboard Example Template和一些节点模块(bluebird,Paypal SDK,Teamwork PM Client)来创建一个稍微复杂的应用程序 . 我花了几天时间做好了 .
我真的想不出任何关于Atom-Shell的负面评价,它坚实,稳定,快速,易于编码 . 我希望这可以帮助别人 .
我一直在使用括号shell一段时间了,这里有一些我的发现:
bracket-shell主要是作为括号IDE项目下的shell开发的,但该项目可以运行任何Web应用程序 . 你只需要将它指向你自己的html页面 . Clint Berry写了一篇关于这样做的优秀教程:http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
该项目由Adobe提供支持,并且有很多活动
文档可能会更好
platform support 他们支持Windows,Mac和Linux . 还可以创建安装程序包 . 我只在Win和Mac上测试过,效果很好 .
feature support html5,css3,js . Html5视频无法开箱即用,但很容易启用(默认情况下,ffmpegsumo.dll不会复制到安装程序中,如果您更改脚本以复制它,它将起作用) .
native features 菜单栏,'open file with',文件系统访问 . 我没有使用任何这些,因为我需要的是与节点进程的通信 .
extensibility 内置了nodejs,您可以从Web应用程序与节点进行通信 . 通过这种方式,您可以使用节点来访问文件系统等 .
architecture 该项目设置良好,在shell项目和您自己的Web应用程序之间保持良好的分离 . 在您自己的应用程序中,提供了一个全局的appshell对象,使您可以访问括号功能(文件系统访问,与节点进程的通信,......) .
有一点需要注意(如果你关心的话),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已拒绝公关在其平台上修复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 . 建议您仅针对那些遗留系统进行特殊构建,并为较新的OS使用较新版本的NW.js .