我应该学习XUL吗?

8
我熟悉Web编程,包括客户端和服务器端,并希望扩展一下自己的知识,以便能够编写一些桌面程序。我的问题是,我不太熟悉桌面小部件的管理方式。据我所知,在典型的桌面程序中,小部件有它们自己的生命周期,相互发送信号并通过回调响应信号。因此,每个小部件都是一个具有许多方法的对象。这增加了与我现在所知道的东西相比的进一步复杂性,我不确定我想学习这个。

在Web上,您通常使用标记语言(通常是某个版本的HTML)描述页面上的元素,并在事件触发时使用Javascript修改元素。我正在尝试理解是否有办法在桌面程序中使用Web范例。我希望能够通过标记语言描述小部件(这些将是静态的),并根据事件对它们进行修改。如果我理解正确,基于XUL的应用程序就是这样工作的。

问题是,我能找到的关于XUL的文档似乎有点过时。学习XUL是个好主意吗?我能指望在未来几年仍然使用它吗?还是它已经成为了旧技术?

如果XUL不是一个好主意,那么有什么替代方案?对于最简单的应用程序,其中小部件是静态的或仅稍作修改,有一些易用工具, 工具,但对于更复杂的程序呢?
编辑:我应该提到我主要使用Ubuntu,所以我需要一个Linux或OS独立的工具。

这个问题是否应该移动到programmers.stackexchange.com? - The Student
5个回答

8
XUL可以提供您所需的基本功能。它类似于HTML,使用基于标签的语言来描述界面,并且可以使用JavaScript进行编程。它确实用于桌面开发,包括Firefox、Thunderbird、Songbird和Komodo Edit/IDE等产品。
在桌面上运行,您将比作为Web应用程序拥有更多自由,可以读写文件,并且甚至可以通过XPCOM运行非JavaScript代码。
Mozilla Developer Center上有大量相当新的文档。您要特别寻找的是如何创建xulrunner应用程序 - 这是让您使用XUL创建桌面应用程序的框架。
使用XUL可以创建出很好的桌面应用程序。但缺点是,除了Mozilla、Songbird和扩展开发人员之外,没有大型的开发者社区,因此对于加入社区来构建应用程序的人来说,支持相对较少。有一个邮件列表和一个IRC频道。挑战在于,当您使用xulrunner时会遇到一些小问题,并且在解决这些问题时会有限的支持。我认为这是一个“先有鸡还是先有蛋”的问题 - 一个多样化、庞大的开发者社区将提供更多支持 - 而更多的支持将增长社区。
我过去两年一直在使用XUL开发产品,我仍在考虑是否会再次选择同样的路径。
我认为我们没有足够的信息告诉您“是否应该学习XUL” - 但如果您需要来自大型社区的高度支持,则可能应该看看其他人提到的一些其他框架。如果您能够努力并且习惯于花费时间去解决问题,它可以成为一个很好的资源,并且您的Web背景可能会帮助您快速上手。如果您对Firefox扩展有任何兴趣,这些技能将直接转移。

由于我没有很强的Web背景,当我尝试切换到HTML应用程序时,我会感到想念在XUL中布置界面的简便性。如果你想要稍微调整一下,可以看看XUL ExplorerXUL Periodic Table


1

如果你非常反感学习C#这样的语言,你可以使用Flex编写AIR应用程序。它有一种标记语言,但也使用了一些真正的编程语言ActionScript。对我来说,这是编写桌面应用程序的一个很好的入门。


1
你可能想要了解一下Adobe的AIR技术。它允许你使用一个叫做MXML的标记语言(类似于HTML,但语法更严格)来描述UI,并使用ActionScript来定义函数,这是一种类似于JavaScript的脚本语言。AIR应用程序是平台无关的,因为它们在抽象出OS特定的东西的AIR平台上运行。由于同样的原因,它们可能比本地应用程序慢一些,但对于小型应用程序来说,这可能不是一个问题。这取决于你更看重什么——运行速度还是开发速度。
AIR的主要缺点是用户需要在他们的计算机上安装AIR平台才能安装和运行AIR应用程序,就像你需要在运行任何Java编写的应用程序之前安装Java一样。现在大多数平台都已经默认安装了Java,但AIR还没有那么普及。
至于XUL,如果我错了,请有人纠正我,但显然它是Mozilla应用程序(如Firefox、Thunderbird等)中描述UI的标记语言,并用于开发其应用程序的扩展。我找不到任何关于XUL被用于真正的桌面应用程序的参考资料。

谢谢,Adobe Air 看起来非常有趣。至于在真正的程序中使用 XUL,您可能想查看这个页面:https://developer.mozilla.org/en/XULRunner_Hall_of_Fame - Andrea
5
不确定为什么这个回答被接受了,因为问题是关于是否应该学习XUL,但是这个回复甚至在未被划掉的部分中也没有提到XUL,因此不准确! - pc1oad1etter
最初的问题是关于Ubuntu支持的。Adobe已经停止了对Linux的AIR支持。https://en.wikipedia.org/wiki/Adobe_Integrated_Runtime - SMTF
将近五年过去了,如果OP决定继续使用Adobe AIR,我会为她感到有点难过。这基本上就是Flash,众所周知,Flash是一种正在消亡的技术。另一方面,XUL仍然表现良好。 - JohnEye

0

看看WPF,它利用XAML,对你来说可能不会是太高的学习曲线。

如果您正在使用Ubuntu,您可能希望查看Mono框架,它是Linux系统上的C#。存在一种名为Moonlight的形式的XAML,可能对您有用。至少这是您可以检查的一个选项!


你是指Windows Presentation Foundation吗?我应该在实际问题中提到这一点,但我主要使用Ubuntu,所以这不是一个真正的选择。抱歉我没有说清楚。 - Andrea

0

我和你一样,正在寻找编程方面的解决方案。目前为止,我看过了:

但错过了XUL...嗯... XUL 的一个优点是我可以用它来制作 Firefox 插件 :) 这开启了更多可能性。

我发现 Titanium 和 AIR 的文档都有些欠缺,所以我觉得很难入门。我没有真正开始学习 Silverlight,但我学过 WPF。对于 AIR,我发现它的 WebKit 已经 被修改以禁用一些我想要使用的 CSS3 特性,比如 @font-face 和阴影 :( 让人失望。

如果我使用“本地”桌面编程语言,将会提供很多有吸引力的优势。

WPF/C# 与 Windows 7 有很好的整合性(例如跳转列表、任务栏缩略图等),这可能会提高用户的生产力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接