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

Is there a cross-OS GUI framework that supports embedding HTML pages?

本文关键字:操作系统 GUI 框架 支持 有一个 HTML 是否      更新时间:2023-09-26

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

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

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

还有TideSDK,正式名称为钛。这提供了一个WebKit HTML/JavaScript小部件,它几乎可以完成您想要的一切,包括运行Chrome开发工具。


编辑下面的。整合我的更新与TideSDK开发人员的反馈:

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

TideSDK允许您使用您的网络开发技能创建桌面应用程序,并提供广泛的特权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团队目前正在开发一款TidesDKBuilder应用程序。它将提供一个用于创建、运行和打包TideSDK应用程序的GUI。为了让开发人员更快地开始,TideSDK Builder引入了一个新功能-脚手架。脚手架生成所有的锅炉板,以实例化具有特定开发模式(如Backbone MVC)的项目。开发人员可以使用TideSDK Builder创建、导入和共享脚手架。

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

Hello World

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

├── 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、系统托盘或窗口中的图像。

以下是helloworld示例的app.js文件的内容(它将出现在TidesDK1.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代码中,我们创建了一个菜单,添加了"File"answers"Exit"菜单项,并将其设置到主窗口中。一个简单的回调方法用于弹出一个退出确认对话框。如果用户确认,应用程序将退出。

背景

钛由Appcelerator开发,并在Apache 2许可证下提供。最初Appcelerator提供了开源的Titanium Developer来创建项目。后来Appcelerator引入了封闭源代码的Titanium Studio,这是Aptana之上的一个IDE。虽然目前仍有可能在Titanium Studio中开发TideSDK,但未来可能需要一个插件。安德鲁:对不起,我不清楚。钛工作室的插件?Aptana的插件?TideSDK的插件?

Appcelerator提供了一个TiStudio SDK以供使用,这可能有助于我们创建TiStudio插件,以允许TideSDK通过TiStudio 使用

引用,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/)或节点Qt(https://github.com/arturadib/node-qt)有了更多的工作就有了cef(http://code.google.com/p/chromiumembedded/),伯克利(http://berkelium.org/),敬畏(http://awesomium.com)或者如何在GUI应用程序中嵌入firefox?它说明了如何在应用程序中嵌入gecko(firefox的引擎)。

好吧,现在我的看法是:第一个选项将为你提供更好的选择,因为它们基本上是一个跨平台工作的"浏览器",你将部署一个html+js+css应用程序(有了air,你也可以部署flash/动作脚本应用程序);你必须构建一个应用程序,然后在其中放入"浏览器",这提供了更多的灵活性,但可能会适得其反。

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

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

adobe air-易于使用和部署,但它很闪,给我带来了未优化的奇怪瘙痒感

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

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

其他嵌入方式-还没有测试过,看起来不错,但我不知道,可能太无用了

Qt在QWebView中有这样的功能。

使用Chromium嵌入式框架怎么样。

它是开源的(BSD许可证),并带有针对C、C++、.NET(1或2)、Java、Delphi和Python的绑定。

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

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

AppJS:http://appjs.org/

wxWidgets。

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

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

  • 关于SO:https://stackoverflow.com/questions/1297660/pyside-vs-pyqt
  • 一些技术差异
  • PyQt与PySide的比较
  • PyQt或PySide-使用哪一个

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

FYI,

  • Qt网络示例
  • Qt WebKit示例:

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

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

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

关于Qt,有什么特别的东西让它"不太适合"你吗?

Mono和WinForms 有什么问题

  1. 奇怪的是Qt不适合你。您可能会惊讶地听到Sencha的Architect和Animator产品将Qt和QWebView用于跨平台JavaScript应用程序,这些应用程序具有完整的菜单、图标、可执行文件、系统对话框和文件I/O。

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

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

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

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