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

标签 user-interface theory declarative

我一直在尝试决定采用哪种方法来构建 UI:编程式还是声明式。我正在使用 JavaScript 和网络技术。在一些项目中,如 ExtJSYUI他们采取了程序化的方法:

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

container.render(document.body);

当您需要动态创建 View 组件(?)时,编程方法可能是必要的。它也可以更容易编程,至少对我来说是这样,因为我已经习惯了 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也supports声明式 UI 和程序化 UI。 WFP 和 Silverlight 似乎专注于 XAML .另外,Open Laszlo似乎使用声明式方法。

然后我看到jQuery UI程序化,以及 Dojo Toolkit介于两种方法之间。

我心里有几个问题:

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

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

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

最佳答案

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

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

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

关于user-interface - 声明式与编程式 UI(对象实例、XAML、MXML、XUL 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6458256/

相关文章:

javascript - 输入框和 css 改变颜色

c++ - 使用户界面保持最新状态的最佳方式?

functional-programming - 什么是FFP机器?

.net - 显式设置枚举字段值的优缺点

javascript - 组合 Ramda 函数

haskell - 涉及函数组合的常见模式 (\a b -> f (g a) (g b))

java - 非顶级窗口中的非不透明 JButton 背景变得不透明?

validation - ValidationSet 上的 Powershell 自动完成

theory - Kinect手势识别理论

haskell - 声明式编程中的实习字符串