我想用Ruby开发一个桌面应用程序。然而,我希望在每个平台上都有一个本机GUI(而不是在所有平台上看起来都很糟糕的跨平台GUI工具包)。
我希望每个平台都有不同的GUI(因为不仅外观不同,行为和习惯用法也不同),但我想知道我的选择是什么?特别想知道是否有一种干净的方法来分离前端和后端并正确绑定数据?
目标平台是Windows(Vista和7,XP是一个奖励),Mac OS X(Cocoa)和Linux(GTK?Qt?不知道)。
Ruby语言具有出色的Qt库绑定,您的脚本将是跨平台的。
两种跨平台
事实证明,有两种类型的跨平台UI工具包。
一种有自己的控制,就像你说的,在所有平台上看起来同样糟糕。更糟糕的是:除了一个,它在所有方面都显得格格不入。
但还有一种只是为本地小部件提供了一个统一的接口。这种工具包最好的例子是SWT1。。看起来,它是,在每个平台上几乎完全原生,但它只有一个API。
因此,您不应该简单地排除所有跨平台工具包,而应该排除那些伪造原生UI的工具包。
开发包装器接口
还有第二种方法。如果你的程序与用户的界面可以通过一个相对狭窄的界面来引导,你可以简单地开发到该界面,然后为你想要支持的每个平台实现它的底部。是的,您必须重写一个模块,但所有其他模块保持完全相同,并且您可以获得本机小部件。您还可以在没有大量膨胀的情况下获得尽可能小的可执行文件。
也许最重要的是,在代码和原生窗口系统之间没有复杂而不透明的软件层。您可能会节省与为第一个端口编写额外模块一样多的调试时间
1.我知道我的Java示例不会对你有多大帮助,除非你使用的是jRuby,但SWT与Swing是一个真正纯粹的UI工具包对错(IMHO)划分的例子
WxWidgets接口声称通过一个API在Windows、OS X、Linux和UNIX上使用本机接口。
以前用过它的同事都很喜欢,但我自己没有用过。