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