9

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

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

我知道 C#、JavaScript 和一点点 python。

4

9 回答 9

24

还有正式名称为 Titanium的TideSDK 。这提供了一个 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 生成所有样板以实例化具有特定开发模式的项目,例如 Backbone MVC。开发者可以使用 TideSDK Builder 来创建、导入和共享脚手架。

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

你好世界

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 的插件?还是阿普塔纳?还是 TideSDK?]

Appcelerator 提供了一个 TiStudio SDK 来使用,它可以帮助我们为 TiStudio 创建一个插件,以允许通过 TiStudio 使用 TideSDK

于 2012-08-27T01:20:23.227 回答
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 和 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 ) 或如何在 GUI 应用程序中嵌入 firefox?它说明了如何在应用程序中嵌入壁虎(firefox 的引擎)。

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

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

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

adobe air - 易于使用和部署,但它是闪光的,它给我未优化的东西那种奇怪的瘙痒感

appjs - 是 nodejs,示例有效,我无法让我的自定义应用程序运行,我认为它还没有完善,对我来说,它以一种古怪的方式工作

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

其他嵌入方式 - 尚未测试,看起来不错,但我不知道,可能太无用

于 2012-08-30T05:38:28.583 回答
4

Qt有这样的东西QWebView

于 2012-08-24T12:57:17.157 回答
3

使用Chromium Embedded Framework怎么样?

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

这个 .NET 绑定也与 Mono 完全兼容,这将有助于拥有一个跨平台的应用程序。

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

于 2012-08-31T06:35:29.777 回答
2

我要把这个扔掉:

应用程序: http ://appjs.org/

于 2012-08-30T20:02:19.483 回答
1

wxWidgets也是。

PS:Qt对跨平台 GUI 的用途更感兴趣。

于 2012-08-24T13:07:06.807 回答
0
  1. 奇怪的是 Qt 不适合你。听到 Sencha 的 Architect 和 Animator 产品将 Qt 和 QWebView 用于具有完整菜单和图标和可执行文件以及系统对话框和文件 I/O 的跨平台 JavaScript 应用程序,您可能会感到惊讶。

    它目前适用于 Windows、OSX 和 Linux。

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

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

  2. 另一个解决方案是 Adob​​e 的 Air,它类似于具有原生支持的浏览器。它还提供部署。

于 2012-08-31T08:37:09.913 回答
0

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

还有PythonQt,但我根本没有研究过。

供参考,

  • Qt 网络示例
  • Qt WebKit 示例

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

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

  • Qt 也支持 C#
  • 许多其他语言
  • KDE(Linux桌面环境)使用和开发Qt

Qt 有什么特别之处使它“不适合”你吗?

于 2012-08-29T12:03:27.400 回答
0

Mono和 WinForms有什么问题

于 2012-08-29T13:55:38.527 回答