How to develop Desktop Apps using HTML/CSS/JavaScript?
首先,我对专业的工作不感兴趣。我是一个网络开发人员,我的一个同事最近离开Spotify,说他将主要在Spotify桌面应用程序的javascript中工作。他说它使用"Chrome框架",里面的一切都像一个web应用程序(html/js/css)一样完成。
作为一个从不为桌面构建任何东西的Web开发人员,这是一个好消息。如果我可以使用我已经知道的技术,并在某种"框架"内实现它们,并且仍然能够构建一个窗口或更好的跨平台应用程序。
我知道我没有提到任何关于数据库的信息,但是即使是一个简单的网络技术的Hello World桌面应用程序也会很好的开始使用。
那么这件事怎么办?我到底需要/需要知道什么?
您可以从Titanium for桌面开发开始,也可以看看Chromium嵌入式框架。它基本上是基于Chromium的Web浏览器控件。
它是用C++编写的,所以你可以在你的容器应用程序中做所有你想要的低级操作系统(咆哮、托盘图标、本地文件访问、COM端口等),然后在HTML/JavaScript中使用所有的应用程序逻辑和GUI。它允许您截获任何HTTP请求,以提供本地资源或执行一些自定义操作。例如,对http://localapp.com/setrayiconstate的请求?状态=Active可被容器拦截,然后调用C++函数来更新托盘图标。
它还允许您创建可以直接从JavaScript调用的函数。
在CEF中直接调试javascript非常困难。像Firebug这样的东西是不支持的。
您也可以尝试appjs.com(帮助构建桌面应用程序)。对于使用HTML、CSS和javascript的Linux、Windows和Mac)
另外,正如@clint所指出的,brackets.io(adobe)的团队使用chromium嵌入式框架创建了一个很棒的shell,这使得启动起来更加容易。它被称为括号shell:github.com/adobe/brackets-shell有关它的详细信息,请访问:clintberry.com/2013/html5-desktop-apps-with-brackets-shell
NW.JS
(以前称为节点webkit)
如果您熟悉节点或有丰富的javascript经验,我建议您使用nw.js。
NW.js is an app runtime based on Chromium and node.js.
Features
- Apps written in modern HTML5, CSS3, JS and WebGL
- Complete support for Node.js APIs and all its third party modules.
- Good performance: Node and WebKit run in the same thread: Function calls are made straightforward; objects are in the same heap and can just reference each other
- Easy to package and distribute apps
- Available on Linux, Mac OS X and Windows
您可以在这里找到nw.js repo,并在此对nw.js进行了很好的介绍。如果你喜欢学习node.js,我会推荐这篇文章,上面有很多很好的链接。
Awesomium makes it easy to use HTML UI in your C++ or .NET app
更新
我以前的回答现在已经过时了。这些天,如果不考虑用电子来做这个,你会疯的。许多流行的桌面应用程序都是在此基础上开发的。
注意:AppJS已弃用,不再推荐。
看看nw.js。
HTML/JS/CSS桌面应用程序的解决方案似乎并不短缺。
我刚刚遇到的一个解决方案是tidesdk:http://www.tidesdk.org/,它看起来非常有前途,查看文档。
您可以使用python、php或ruby进行开发,并将其打包为Mac、Windows或Linux。
很抱歉打破了你的泡沫,但Spotify桌面客户端只是一个基于Webkit的浏览器。当然,它公开了特定的附加功能,但它只能运行JS和呈现HTML/CSS,因为它有JS引擎和Chromium呈现引擎。这对编写客户端Web应用程序和部署到多个平台没有帮助。
你所寻找的类似于SenchaTouch——一个允许HTML5应用程序本地部署到iOS、Android和黑莓设备的框架。它基本上充当某些API调用和可用的设备特定功能之间的中介。
我对AppAccelerator没有经验,但它看起来确实在做这件事——而且在网上得到了非常好的评价。你应该试一试(除非你想回到1999年和HTA女士一起滚动)
您可以使用Adobe Air构建JavaScript应用程序…http://www.adobe.com/products/air.html
我知道有Fluid和Prism(还有其他的,我以前用过的那个)可以让你把一个网站加载到一个看起来像独立的应用程序中。
在Chrome中,您可以为网站创建桌面快捷方式。(你在Chrome中这样做,你不能/不应该用你的应用打包)Chrome框架是不同的:
Google Chrome Frame is a plug-in designed for Internet Explorer based
on the open-source Chromium project; it brings Google Chrome's open
web technologies to Internet Explorer.
你需要为你的webapp准备一些这样的包装器,剩下的就是你习惯的web技术。您可以在应用程序脱机时使用HTML5本地存储来存储数据。我想你甚至可以和sqlite一起工作。
不过,我不知道您将如何访问操作系统特定的功能。我上面所描述的和任何"常规"网站都有相同的限制。希望这能给你一些关于从哪里开始的指导。
CEF提供了许多定制的灵活性和选项。但是,如果目的是快速开发节点webkit也是一个不错的选择。node web kit还提供直接从dom调用节点模块的能力。
如果没有任何本地模块来集成节点,webkit可以提供更好的里程数。使用本机模块C/C++,甚至C语言,CEF效果更佳。