User interface 声明式与编程式UI(对象实例、XAML、MXML、XUL等)

User interface 声明式与编程式UI(对象实例、XAML、MXML、XUL等),user-interface,theory,declarative,User Interface,Theory,Declarative,我一直在努力决定采用哪种方法来构建UI:编程式还是声明式。我正在使用JavaScript和web技术。在一些项目中,如和,他们采取了计划方法: var container = new Ext.Container({ style: 'padding: 4px;', items: [ new Button({text: 'hello'}) ] }); container.render(document.body); <?xml version="1.

我一直在努力决定采用哪种方法来构建UI:编程式还是声明式。我正在使用JavaScript和web技术。在一些项目中,如和,他们采取了计划方法:

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

container.render(document.body);
<?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>
当您需要动态创建视图组件时,编程方法可能是必要的。它也可以更容易编程,至少对我来说是这样,因为我已经习惯了API和代码助手

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

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

container.render(document.body);
<?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>

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

Flex还包括声明式UI和编程式UI。世界粮食计划署和Silverlight似乎正在关注这一问题。另外,似乎使用声明性方法

然后我看到了编程,以及介于这两种方法之间的东西

我脑子里有几个问题:

1) 动态(在运行时添加的组件)UI能否单独以声明方式实现

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

3) 你喜欢哪一个?为什么?

1)是的,你可以随时做一些类似的事情:elem.innerHTML=“”;大多数语言都支持类似的功能

2) 据我所知,大多数语言都支持这两种语言。我的猜测是,最终,一个品种会转化成另一个品种。如果不支持其中一种,语言就会自我限制。(我不想使用xyz,我不能以声明/编程方式编写UI)


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

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

→ 静止的 声明式语法更好,更易于管理

→ 动态
声明式和编程式的混合将是最好的

我认为始终有一种编程方法可用,因为UI不是由魔法构成的。我猜声明式UI只是构建在编程式UI之上?