13

XulRunner/Gecko 似乎对于开发 GUI 密集型应用程序非常有趣(通过使用广泛使用的技术,如 HTML / CSS / SVG / XUL / Javascript)。但是底层的 C++ APIS(XPCOM、NECKO、...)看起来既古老又复杂。此外,文档/开发工具的普遍缺乏确实令人恐惧。

另一方面,QT 有一个相当不错的平台,并且有很好的文档和支持。UI 部分确实是“传统的”。

您对 XULRUNNER 的体验如何,特别是与 QT/GTK/MFC 等其他 C++ 桌面应用程序框架相比...?什么不见​​了?什么是真棒?

附带问题:如果我想将现有的 MFC 应用程序迁移到跨平台 C++ 桌面应用程序框架,使用 XULRUNNER 代替 QT 或 GTK 是否明智?

4

5 回答 5

7

老实说,我只是不同意那里没有很多 XULRunner 应用程序......有很多负载,这些只是 Mozilla 知道的几个:

https://developer.mozilla.org/en/xulrunner_hall_of_fame

developer.mozilla.org/en/List_of_Mozilla-Based_Applications

这当然不包括 Firefox 和 Thunderbird 本身!

我们自己的列在那里 www.redbacksystems.com/liaison/

自 2003 年左右以来,我一直在这个平台上进行开发,我喜欢它,因为我现在选择永远不会在任何其他平台上编程。

当您可以使用简单的符合标准的 JavaScript/ECMA(包括 E4X)编写时,您到底为什么要使用 QT 或 GTK 编写,并具有出色的 CSS 和 XML 支持——包括 XBL(尽管是 1.0)、RDF、XML 模板、远程更新、插件和扩展支持等等等等,甚至不要开始我的地理位置或本地 SQL 支持。

如果您无法在几天内启动一个相当完整的 XULRunner 应用程序,那么您可能遇到了严重错误。无论您的部署平台如何,都需要进行任何其他编码工作。

对我来说,Mozilla 工具包是首选平台,没有之一。

顺便说一句,据我了解,Joost 在编写/实现自己的视频渲染并尝试 DRM 内容时遇到了特定的挑战。

于 2010-06-22T08:42:59.397 回答
6

据我所知,实际上使用 XulRunner 构建的应用程序并不多。我应该知道,因为我是其中一位的技术主管,我们试图雇佣有经验的人。事后看来,这并不让我感到惊讶。我们使用 XulRunner 的决定是由非开发人员做出的,违背了我的建议。许多事情花费的时间是我们之前使用的 wxWidgets 的两倍。现在我也在其他项目中使用过Qt,不得不说它比wxWidgets还要好。所以我可以相当可靠地指出,Qt 的效率将是 XulRunner 的两倍多,而且您将更容易找到有经验的开发人员。

当然,XulRunner 中的 Javascript 很好。但 Qt 还附带 QtScript,它包装了 JavaScriptCore。而当谈到构建真正丰富的 UI 时——即不仅仅是一堆图像——那么 HTML+SVG+CSS+JS 就不会削减它。它们的开发是为了让简单的事情变得简单,而不是让复杂的事情成为可能。只要看看最新的功能,视频。HTML5 的解决方案:一个标签,让一些幕后的 C++ 代码做真正的工作。尽管视频只是一大堆图像,一次显示一个。

所以,问题不在于缺少一些东西。只是发展慢,结果慢。

令人敬畏的一面是,插件机制实际上工作得很好。

现在,如果您从头开始,这一切都适用。如果您已经有很多 MFC/C++ 代码,请坚持使用 C++,只删除 MFC 部分。这意味着 Qt 或者 wxWidgets 是明显的赢家。

于 2010-04-14T13:18:51.250 回答
2

我不认为您真的想用 C++ 编写 XUL 代码。XPCOM 等 API 的目的是让您可以与现有的 C 库进行交互,或者如果您需要编写需要在 javascript 引擎之外调用 API 的平台特定内容。

如果你想用javascript编写一个跨平台的 GUI 应用程序,尽管它可能是你正在寻找的。

于 2010-04-13T20:21:16.743 回答
1

我不在那个团队中,但 joost 桌面应用程序使用 XULRUNNER 作为 UI。尽管这是一个选项,但我个人不会为跨平台 GUI 使用一根棍子。事实上,我的经验表明,拥有一个单一的跨平台应用程序总是低于标准的。

我的建议:拆分您的核心应用程序功能并为您需要的任何平台构建本机 UI。您将获得更好的用户体验。

于 2010-04-13T21:18:58.477 回答
0

有人试过这个吗?

XUL 查看器 http://code.google.com/p/xulwin/

这是一个非常了不起的项目。干净的代码,很少的依赖项(只是 poco-basic 和 boost)

哇!

于 2010-08-04T17:25:29.590 回答