如何使用HTML / CSS / JavaScript开发桌面应用程序?
首先,我没有兴趣做这个专业。 我是一名Web开发人员,最近离开了Spotify的一位同事,他表示他将主要在Spotify桌面应用程序的JavaScript中工作。 他说,它使用“Chrome框架”,里面的一切都像一个Web应用程序(HTML / JS / CSS)完成。
作为一个从来没有build立任何桌面的Web开发人员,这是一个好消息。 如果我可以使用我已经知道的技术,并在某种“框架”中实现它们,仍然可以构build一个Windows或更好的跨平台应用程序。
我知道我没有提到有关数据库的任何内容,但即使是一个简单的hello world桌面应用程序,使用web技术也是非常棒的。
那么这个怎么办呢? 究竟我需要/需要知道什么?
您可以从Titanium开始进行桌面开发。 你也可以看看Chromium Embedded Framework 。 这基本上是一个基于铬的网页浏览器控制。
它是用C ++编写的,所以你可以在你的容器应用程序中完成你想要的所有底层操作系统的东西(Growl,托盘图标,本地文件访问,COM端口等),然后在html / javascript中执行所有的应用程序逻辑和GUI。 它允许你拦截任何http请求来服务本地资源或执行一些自定义操作。 例如,对于http://localapp.com/SetTrayIconState?state=active的请求可以被容器拦截,然后调用C ++函数来更新托盘图标。
它也允许你创build可以直接从JavaScript调用的函数。
在CEF中直接debuggingJavaScript非常困难。 没有任何像Firebug的支持。
您也可以尝试AppJS.com (有助于使用HTML,CSS和JavaScript为Linux,Windows和Mac构build桌面应用程序)
另外,正如@Clint所指出的, brackets.io (Adobe)的团队使用Chromium Embedded Framework创build了一个很棒的shell,使得它更容易上手。 它被称为括号shell: github.com/adobe/brackets-shell在这里了解更多关于它的信息: clintberry.com/2013/html5-desktop-apps-with-brackets-shell
NW.js
(以前称为node-webkit)
如果您熟悉Node或者使用JavaScript,我会build议使用NW.js。
NW.js是基于Chromium和node.js的应用程序运行时。
特征
- 以现代HTML5,CSS3,JS和WebGL编写的应用程序
- 完全支持Node.js API及其所有第三方模块。
- 良好的性能:Node和WebKit运行在同一个线程中:函数调用是直接的; 对象在同一个堆中,只能相互引用
- 易于打包和分发应用程序
- 在Linux,Mac OS X和Windows上可用
您可以在这里findNW.js回购,并在这里介绍NW.js。 如果你喜欢学习Node.js,我会build议这个 SOpost有很多很好的链接。
Awesomium使您可以轻松地在您的C ++或.NET应用程序中使用HTML UI
更新
我以前的回答现在已经过时了。 这些天你会疯狂的不要看着用电子这个。 许多stream行的桌面应用程序已经被开发。
注: AppJS已被弃用,不再推荐。
请看看NW.js。
看来HTML / JS / CSS桌面应用程序的解决scheme并不缺乏。
我刚刚遇到的一个解决scheme是TideSDK: http ://www.tidesdk.org/,看起来很有希望,看文档。
您可以使用Python,PHP或Ruby进行开发,并将其打包为Mac,Windows或Linux。
对不起,你的泡沫破灭了,但Spotify桌面客户端 只是一个基于Webkit的浏览器 。 当然,它公开了特定的附加function,但它只能运行JS和呈现HTML / CSS,因为它具有JS引擎以及Chromium渲染引擎。 这不会帮助您编写客户端Web应用程序并部署到多个平台。
您所寻找的内容与Sencha Touch相似 – 这是一个允许将HTML5应用原生部署到iOS,Android和Blackberry设备的框架。 它基本上充当某些API调用和可用的设备特定function之间的中介。
我没有加赛的经验,有点似乎是做到了这一点 – 并获得非常有利的评论在线。 你应该放弃它(除非你想回到1999年并且用MS HTA进行推广)
我知道有stream体和棱镜 (还有其他人,这是我曾经使用),让您加载一个网站,看起来像一个独立的应用程序。
在Chrome中,您可以为网站创build桌面快捷方式。 (你可以在Chrome中这样做,你不能/不应该用你的应用程序打包)Chrome的框架是不同的:
Google Chrome Frame是基于开源Chromium项目为Internet Explorerdevise的插件; 它将Google Chrome的开放式networking技术带入Internet Explorer。
您需要为您的web应用程序提供某种types的包装,然后剩下的就是您习惯的networking技术。 当应用程序处于脱机状态时,您可以使用HTML5 本地存储来存储数据。 我想你甚至可以使用SQLite。
不过,我不知道如何访问操作系统特定的function。 我上面描述的与任何“常规”网站都有相同的限制。 希望这给你一些指导从哪里开始。
您可以使用Adobe AIR构buildJavascript应用程序… http://www.adobe.com/products/air.html
CEF为定制提供了很多灵活性和选项。 但是如果意图要快速发展,node-webkit也是一个不错的select。 节点networking套件还提供直接从DOM调用节点模块的能力。
如果没有任何本地模块集成Node-Webkit可以提供更好的里程。 使用本地模块C / C ++甚至C#,CEF更好。