声明性与程序化UI(对象实例,XAML,MXML,XUL等)

时间:2011-06-23 17:35:30

标签: user-interface theory declarative

我一直在努力决定采用哪种方法来构建UI:程序化或声明性。我正在使用JavaScript和Web技术。在ExtJSYUI等项目中,他们采用了程序化方法:

var container = new Ext.Container({
    style: 'padding: 4px;',
    items: [
        new Button({text: 'hello'})
    ]
});

container.render(document.body);

当您需要动态创建视图组件(?)时,编程方法可能是必需的。它也可以更容易编程,至少对我而言,因为我已经习惯了API和代码助手。

然而,一些技术如XUL(用于Firefox和Thunderbird UI)基于声明式方法:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="vbox example" title="Example 3...."
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <vbox>
    <button id="yes" label="Yes"/>
    <button id="no" label="No"/>
    <button id="maybe" label="Maybe"/>
  </vbox>
</window>

还有一个名为AmpleSDK的JavaScript GUI框架采用声明式方法。因此,对于基于JavaScript的应用程序,我有两种选择可供选择。

还提供supports声明性用户界面以及程序化用户界面。世界粮食计划署和Silverlight似乎关注XAML。此外,Open Laszlo似乎使用声明性方法。

然后我看到jQuery UI是程序化的,Dojo Toolkit是两种方法之间的东西。

我脑子里有几个问题:

1)动态(在运行时添加的组件)UI是否可以仅以声明方式实现?

2)支持这两种方法是否有意义,以便可以在大多数部分使用声明式样式,如果需要,可以使用编程风格?

3)您更喜欢哪一个?为什么?

2 个答案:

答案 0 :(得分:1)

1)是的,您可以随时执行以下操作:elem.innerHTML =“&lt; content&gt;”;大多数语言支持类似的东西。

2)从我所看到的,大多数语言都支持这两种语言。我猜到最后,一个品种刚刚转变为另一个品种。通过不支持其中一种,语言会限制自己。 (我不想使用xyz,我无法以声明方式/编程方式编写UI。)

3)我个人喜欢声明,它倾向于用更少的行完成事情。

答案 1 :(得分:0)

这取决于您想要制作的应用程序类型:

→静态

声明性语法更好,更易于管理

→动态

声明性和程序性的混合将是最好的