4

我一直在尝试决定采用哪种方法来构建 UI:编程式或声明式。我正在使用 JavaScript 和网络技术。在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 的应用程序,我有两个选择可供选择。

Flex 还支持声明式 UI 以及编程式 UI。WFP 和 Silverlight 似乎专注于XAML。此外,Open Laszlo似乎使用了声明性方法。

然后我看到jQuery UI是程序化的,而Dojo Toolkit介于这两种方法之间。

我心中有几个问题:

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

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

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

4

2 回答 2

1

1) 是的,你总是可以这样做: elem.innerHTML = "<content>"; 大多数语言都支持类似的东西。

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

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

于 2011-06-23T17:45:54.733 回答
0

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

→ 静态

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

 

→ 动态

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

于 2016-09-04T13:35:52.833 回答