DOJO中的声明式或程序化方法?

时间:2011-06-26 14:32:46

标签: javascript dojo

在创建DOJO组件时,我们应该何时更喜欢声明式方法和程序化方法?

2 个答案:

答案 0 :(得分:6)

完全取决于您的需求和偏好。如果你有设计师而不是程序员需要添加Dojo小部件,那么他们最好使用声明性标记。但是,如果您坚持HTML标记通过w3c验证,那么您将需要使用编程方法。

我更喜欢编程方法,因为它允许我将整个表单包装为javascript对象,并创建实例化和验证其小部件的方法。 评论后的附录:我通常会创建一个javascript对象,其表单输入和dojo / dijit小部件作为其属性,因此我可以将它们称为this.startDateTextBox, this.titleInlineEditor等。我处理实例化javascript对象构造函数中的dojo小部件。

如果您使用多个类似的小部件,如果您声明保存其初始化设置的对象并以编程方式加载它们而不是以声明方式声明每个标记中的所有共享属性,则可以节省输入错误。我更喜欢程序化实例化的另一个原因是,我可以在实际启动小部件之前更容易地根据不同条件更改实例化参数,而不是必须在服务器端更改标记。

答案 1 :(得分:6)

从1.6版开始,Dojo支持HTML5数据属性,因此生成的HTML将是有效的。尽管存在性能损失,但声明性方法允许一目了然地看到UI的结构。

我复制了他们在announcement of the HTML5 data attribute-support中提供的样式之间的比较:

  

即使利用新的HTML5有效自定义属性,在HTML中而不是JavaScript中声明小部件仍然有利有弊。从HTML中声明JavaScript组件引入了语义上的杂质,因为HTML不再是纯粹的语义标记,而是包含与特定可视组件的紧密耦合。声明性方法还会产生额外的CPU周期,因为dojo.parse()必须遍历DOM树以查找具有Dojo自定义属性的元素。程序化实例化避免了不必要的循环并保留了HTML的语义纯度。但是,基于标记的小部件声明仍然具有强大的优势,允许我们在一个位置定义和创建小部件,从而以最小的工作量促进快速的应用程序开发。