如何使用HTML / CSS / JavaScript开发桌面应用程序?[关闭]


189

首先,我对专业从事这项工作不感兴趣。我是一名Web开发人员,我的一个同事最近离开了Spotify,他说他将主要使用JavaScript来开发Spotify Desktop应用程序。他说,它使用“ Chrome框架”,并且内部的所有内容都像网络应用程序(HTML / JS / CSS)一样完成。

作为一个从未为Desktop构建任何东西的Web开发人员,这是个好消息。如果我可以使用我已经知道的技术,并在某种“框架”内实施这些技术,并且仍然能够构建Windows或更好的跨平台应用程序。

我知道我没有提到任何有关数据库的信息,但是即使是具有Web技术的简单的hello world桌面应用程序也很不错。

那么如何去做呢?我到底需要/需要知道什么?


应该注意的是,至少有两个非排他性的网络应用。一个将是客户端单页应用程序样式的应用程序,一个将是维护数据库或其他内容状态的应用程序。(当然,最好的应用程序兼有。)您可以在不学习其他知识的情况下学习如何做一个。
Waleed Khan 2012年

这里的另一个相关主题[您可以使用JavaScript进行桌面开发吗?] [1] [1]:stackoverflow.com/questions/109399/… 此致,Ben
benbai123 2012年

你做错了。Web不适用于桌面应用程序。时间段。如果您愿意,可以使用QML / QtQuick,这是一个不错的折衷方案(但它仍然是台式机,而不是网络!)
Stef,


Answers:


74

您可以从Titanium桌面开发开始。您也可以看看Chromium Embedded Framework。它基本上是一个基于铬的Web浏览器控件。

它是用C ++编写的,因此您可以在容器应用中执行所需的所有低级OS东西(Growl,任务栏图标,本地文件访问,COM端口等),然后执行html / javascript中的所有应用逻辑和gui。它允许您拦截任何http请求以服务本地资源或执行某些自定义操作。例如,对http://localapp.com/SetTrayIconState?state=active的请求可能会被容器拦截,然后调用C ++函数来更新任务栏图标。

它还允许您创建可以直接从JavaScript调用的函数。

直接在CEF中调试JavaScript非常困难。不支持Firebug之类的东西。

您也可以尝试AppJS.com(帮助使用HTML,CSS和JavaScript为Linux,Windows和Mac构建桌面应用程序。)

另外,正如@Clint所指出的那样,brackets.io(Adobe)团队使用Chromium Embedded Framework创建了一个很棒的shell,使入门变得更加容易。它称为方括号外壳:github.com/adobe/brackets-shell在此处了解更多信息:clintberry.com/2013/html5-desktop-apps-with-brackets-shell


3
CEF内置了chrome开发工具,因此您可以使用它调试js。AppJS还可以使用nodejs API对操作系统进行低级访问。
Morteza Milani 2012年

1
Bracket.io(Adobe)的团队使用Chromium Embedded Framework创建了一个很棒的外壳,使入门变得更加容易。它称为方括号外壳:github.com/adobe/brackets-shell 在此处了解更多信息:clintberry.com/2013/html5-desktop-apps-with-brackets-shell
Clint

我目前正在使用CEF和Eclipse作为开发工具,并且可以通过将--remote-debugging-port = 8080传递给程序args的运行配置,然后通过Chrome中的localhost:8080来将CEF链接到Chrome Developper Tools 。因此,请删除该部分-直接在CEF中调试JavaScript非常困难。不支持Firebug之类的东西。-
绞儿童

另外,我也开始开发Kontenaテナンテナgithub.com/jhg/kontena,以开发适用于Win32,Linux,Unix之类的Mac和SmartPhone的解决方案,该解决方案将基于CEF,PhoneGap,Adobe Backet.io,AppJS等。它是如此的不稳定,现在只是一个获得MVP的原型,是用Python编写的,用于测试概念,但是会使用QT5将代码转换为C ++ / C(现在使用QT4),并且在使用C ++ / C时开始对mobil进行翻译支持。

@JHG好工作。让我们知道什么时候它的正式发布和错误修正
阿尔弗雷德

33

NW.js

(以前称为node-webkit)

如果您熟悉Node或有JavaScript的经验,我建议使用NW.js。

NW.js是基于Chromium和node.js的应用程序运行时。

特征

  • 用现代HTML5,CSS3,JS和WebGL编写的应用
  • 完全支持Node.js API及其所有第三方模块。
  • 良好的性能:Node和WebKit在同一线程中运行:函数调用变得简单明了;对象在同一堆中,并且只能相互引用
  • 易于打包和分发应用
  • 在Linux,Mac OS X和Windows上可用

你可以找到NW.js回购这里,和一个很好的介绍NW.js 这里。如果您想学习Node.js,我会推荐这篇 SO文章,其中包含很多很好的链接。


2
第二。很棒的工具。
Erik Reppen 2014年

但这不能在不要求他们安装node和node-webkit的人之间分配,对吗?
贾尼斯·格鲁吉斯

@JānisGruzis不,您使用NW.js二进制文件交付了应用程序。
大约蓝色

27

Awesomium使您可以在C ++或.NET应用程序中轻松使用HTML UI

更新资料

我以前的答案现在已经过时了。如今,如果您不打算为此使用Electron,您会发疯。在其之上开发了许多流行的桌面应用程序。



9

似乎HTML / JS / CSS桌面应用程序的解决方案并不短缺。

我刚刚遇到的一种解决方案是TideSDK:http://www.tidesdk.org/ ,在查看文档时似乎很有希望。

您可以使用Python,PHP或Ruby进行开发,并将其打包为Mac,Windows或Linux。


1
看起来很有前途,但看起来却不再发展。核心团队目前正在研究的东西通话TideKit但需要永远为他们释放它- PLUS这将花费金钱:(
TheStoryCoder

1
是的,可惜。不过,在我回答时,它看起来确实很有希望。我想这就是他们不愿提出有关推荐材料的问题的原因之一。
mydoghasworms 2015年

3

对不起,爆你的泡沫,但Spotify的桌面客户端只是一个基于Webkit的浏览器。当然,它公开了特定的附加功能,但是它只能运行JS并呈现HTML / CSS,因为它具有JS引擎和Chromium呈现引擎。这无助于编码客户端Web应用程序并将其部署到多个平台。

您要寻找的内容类似于Sencha Touch,即一个框架,该框架允许HTML5应用程序本机部署到iOS,Android和Blackberry设备。它基本上是某些API调用和可用的特定于设备的功能之间的中介。

我没有使用appcelerator的经验,但它似乎确实在这样做-并在网上获得了非常好评。您应该尝试一下(除非您想回​​到1999年并使用MS HTA进行滚动;)


它使用webkit进行应用,但主要软件不是基于html / js
Sucrenoir 2012年

1

我知道有FluidPrism(还有其他一些,这是我以前使用的),可以让您将网站加载到看起来像独立应用程序的网站中。

在Chrome中,您可以为网站创建桌面快捷方式。(您可以在Chrome中执行此操作,不能/不应该将其与您的应用打包在一起)Chrome浏览器内嵌框架与众不同:

Google Chrome浏览器内嵌框架是基于开源Chromium项目为Internet Explorer设计的插件;它将Google Chrome浏览器的开放式网络技术引入Internet Explorer。

您需要为您的Web应用程序提供某种包装,然后剩下的就是您习惯的Web技术。您可以在应用离线时使用HTML5 本地存储来存储数据。我认为您甚至可以使用SQLite。

不过,我不知道您将如何使用特定于操作系统的功能。我上面描述的内容与任何“常规”网站都具有相同的局限性。希望这可以为您提供从何处开始的指导。



0

CEF为定制提供了很多灵活性和选项。但是,如果要快速开发node-webkit也是一个不错的选择。节点Web工具包还提供了直接从DOM调用节点模块的功能。

如果没有集成本机的模块,Node-Webkit可以提供更好的服务。使用本机模块C / C ++甚至C#,使用CEF更好。

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.