是否有支持嵌入HTML页面的跨操作系统GUI框架?

时间:2012-08-24 12:54:20

标签: c# javascript python tidesdk

我想开发一个跨系统使用的桌面应用程序(win,mac,linux),是否有一个GUI框架可以让我为所有3个平台编写一次代码并拥有一个完全可脚本化的嵌入式Web组件?

我需要它有一个API来在应用和网页javascript之间进行通信。

我知道C#,JavaScript和一些python。

9 个答案:

答案 0 :(得分:24)

还有TideSDK正式名称为Titanium。这提供了一个WebKit HTML / JavaScript小部件,可以完成您想要的所有操作,包括运行Chrome开发人员工具。


编辑以下。通过TideSDK开发人员的反馈整合我的更新:

TideSDK,以前称为Titanium Desktop,是一个开源软件开发工具包,用于使用HTML5,CSS3,JavaScript和其他常用脚本语言创建多平台桌面应用程序。该项目由Github托管。主网站拥有全面的文档,并拥有一个活跃的开发人员社区。成千上万的开发人员使用以前的Titanium Desktop开发桌面应用程序。也许最受认可的应用是Wunderlist

TideSDK允许您使用Web开发技能创建桌面应用程序并提供各种特权API。您可以使用python,php或ruby中的成熟库轻松扩展应用程序的功能。

TideSDK的核心是编译到WebKit组件中的对象桥。该桥允许其他脚本语言 - python,php或ruby - 使用DOM中的脚本标记在HTML页面上运行,就像JavaScript一样。您也可以直接从应用程序中调用.py,.rb或.php文件。

TideSDK只能使用基本的文本编辑器 - 它不需要任何特殊工具或IDE,尽管许多开发人员更喜欢更丰富的工具。 TideSDK包括用于在本地运行应用程序(用于开发和调试)的命令行工具,还可以将其打包到您正在开发的操作系统的安装程序中(支持Windows,Mac OSX和Linux)。为了获得所有需要的安装程序,典型的TideSDK开发环境将包括每个操作系统的物理或虚拟机。 TideSDK团队正在寻求尽快实施一种不同的更好的方法。

TideSDK团队目前正在开发TideSDK Builder应用程序。它将提供用于创建,运行和打包TideSDK应用程序的GUI。为了让开发人员更快地开始,TideSDK Builder引入了一项新功能 - Scaffolds。 Scaffolds生成所有锅炉板以实例化具有特定开发模式的项目,例如Backbone MVC。开发人员可以使用TideSDK Builder来创建,导入和共享脚手架。

TideSDK的路线图包括CommonJS for 1.4的实现,旨在为开发人员提供使用JavaScript的更模块化的开发体验。

Hello World

TideSDK项目包含一些样板代码和一个包含核心项目文件的Resources文件夹。以下说明了将在所有支持的平台上运行的简单hello world应用程序的结构:

├── CHANGELOG.txt
├── LICENSE.txt
├── README.md
├── Resources
│   ├── app.js
│   ├── default_app_logo.png
│   └── index.html
├── manifest
└── tiapp.xml

清单包含有关项目使用的运行时模块的信息。 tiapp.xml提供配置,default_app_logo.png是默认显示在Dock,系统托盘或应用程序窗口中的图像。

以下是hello world示例的app.js文件的内容(因为它将出现在TideSDK 1.3.0中)。以前的版本将使用已停产的Titanium命名空间。

// create and set menu
var menu = Ti.UI.createMenu(),
fileItem = Ti.UI.createMenuItem('File'),
exitItem = fileItem.addItem('Exit', function() {
  if (confirm('Are you sure you want to quit?')) {
    Ti.App.exit();
  }
});

menu.appendItem(fileItem);
Ti.UI.setMenu(menu);

以下是同一应用的HTML。它调用上面的脚本。

<!DOCTYPE html>
<html>
<head>
  <title>Hello World</title>
  <style type="text/css">
    body {background: #fff;}
  </style>
</head>
<body>
  <h1>Hello World</h1>
  <script type="text/javascript" src="app.js"></script> 
</body>
</html>

在少于10行的JavaScript代码中,我们创建一个菜单,添加“文件”和“退出”菜单项,并将其设置为主窗口。一个简单的回调方法用于弹出一个退出确认对话框。如果用户确认,则应用将退出。

背景

Titanium由Appcelerator开发,并在Apache 2许可下提供。最初Appcelerator提供了开源Titanium Developer来创建项目。后来,Appcelerator推出了封闭源码Titanium Studio,这是一款位于Aptana之上的IDE。虽然目前仍有可能在Titanium Studio中开发TideSDK,但未来可能还需要一个插件。 [安德鲁:对不起,我不清楚这一点。 Titanium Studio的插件?还是Aptana?还是TideSDK?]

Appcelerator提供了一个可供使用的TiStudio SDK,可帮助我们创建TiStudio插件,以便通过TiStudio使用TideSDK

答案 1 :(得分:8)

如上所述,TideSDK(http://www.tidesdk.org/)是一个选项(目前对我来说更好) 您也可以使用相同的想法XUL Runner(https://developer.mozilla.org/en-US/docs/XULRunner),Adobe AIR(http://www.adobe.com/devnet/air/air-sdk-download.html)(这里:http://www.adobe.com/devnet/air.html是除了flash之外的其他方式的“how to”教程Dreamweaver,AppJS(http://appjs.org/)或Node Qt(https://github.com/arturadib/node-qt) 有更多的工作,有cef(http://code.google.com/p/chromiumembedded/),berkelium(http://berkelium.org/),awesomium(http://awesomium.com)或How can I embed firefox in a GUI application?,它们说明了如何在应用程序中嵌入gecko(firefox的引擎)。

好吧,现在我对所有人的看法:第一个选项将为你提供更好的方式,因为它们基本上是一个跨平台工作的“浏览器”,你将部署一个html + js + css应用程序(有空气你也可以部署flash /动作脚本应用程序);您需要构建应用程序然后将“浏览器”放入其中的其他选项,它提供了更大的灵活性,但可能适得其反。

我对所有人的体验是: tidesdk - 很好但稳定但仍在增长,因此可能会遗漏一些高级功能,但您可以编译它并且开发团队非常活跃

xulrunner - 稳定,不可能做复杂的事情,你需要一个好的C知识来制作你自己的组件,因为它只为你提供基本的东西。它在你能做的事情上非常灵活,但内容结构严格,你的应用程序不会运行,除非它以这种方式组织,并且在我看来有一个丑陋的语法(笑),它是java和javascript样式的混合编程

adobe air - 易于使用和部署,但闪光灯给我带来了未经优化的东西的奇怪的瘙痒感觉

appjs - 是nodejs,示例有效,我无法运行我的自定义应用程序,我认为它还没有精制,对我来说,它以一种奇特的方式运行

nodeqt - 是qt + nodejs,你需要编译自己的qt版本,我还没有测试但看起来很容易部署

其他嵌入方式 - 没有经过测试,看起来很好而且全部,但我不知道,可能太无效了

答案 2 :(得分:4)

QtQWebView有关。

答案 3 :(得分:3)

如何使用Chromium Embedded Framework

它是开源的(BSD许可证),附带C,C ++,.NET(12),Java,Delphi和Python的绑定。

This .NET binding也与Mono完全兼容,这将有助于拥有跨平台应用。

注意:AppJS,在另一个答案中提到,是建立在CEF之上(使用node.js)。

答案 4 :(得分:2)

我要把这个扔掉:

AppJS:http://appjs.org/

答案 5 :(得分:1)

wxWidgets

PS:Qt让我更感兴趣的是跨平台的GUI。

答案 6 :(得分:0)

因为我的第一个答案是针对wxWidgets,你觉得Qt不适合你...
您提到 javascript - 请注意PyQt为Qt 2和Qt 3提供[python]绑定”。 PySide是诺基亚针对Qt的官方Python绑定。 “PyQt vs PySide”搜索提供了有趣的结果:

还有PythonQt但我根本没有调查过它。

FYI,

  • Qt Networking examples
  • Qt WebKit examples

      

    Qt提供了一个基于WebKit的集成Web浏览器组件,WebKit是一种流行的开源浏览器引擎。

         

    这些示例和演示展示了WebKit的一系列不同用途,从在Qt用户界面中显示Web页面到基本功能Web浏览器的实现。

  • Qt还支持C#
  • many other languages
  • KDE(Linux桌面环境)使用并开发Qt

有关Qt的任何具体内容使其“不适合你”吗?

答案 7 :(得分:0)

Mono和WinForms

出了什么问题

答案 8 :(得分:0)

  1. 很奇怪Qt不适合你。您可能会惊讶地发现Sencha的Architect和Animator产品使用Qt和QWebView进行跨平台JavaScript应用程序,包括完整菜单和图标以及可执行文件和系统对话框以及文件I / O.

    目前适用于Windows,OSX和Linux。

    他们使用一个名为ion的内部开发库来加载和交互JavaScript应用程序。它们提供了一些帮助类供JS使用。

    一个简单的骨架c ++应用程序,它使用Qt创建和加载窗口并在该窗口中创建Web视图,并将文件中的html和其他内容加载到该视图中。

  2. 另一个解决方案是Adobe的Air,它就像一个支持本机的浏览器。它还提供部署。