我一直在尝试决定采用哪种方法来构建 UI:编程式或声明式。我正在使用 JavaScript 和网络技术。在ExtJS和YUI等一些项目中,他们采用了程序化方法:
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)你更喜欢哪一个,为什么?