Dojo项目中的声明性编码或编程编码?

时间:2013-10-02 05:11:20

标签: dojo declarative

根据我自己的经验,我喜欢程序化编码。在这里列举一些好处:

  1. 更好的表现:无需解析。
  2. html和javascript之间没有切换:没有html,代码中的所有内容(使用css来控制布局。)
  3. 易于动态更改内容。
  4. 易于阅读和维护。
  5. 但是,它使用声明性编码在这里联系了很多用户。我的问题是:使用声明性编码有什么好处?哪一个是道场大师的最爱?

1 个答案:

答案 0 :(得分:4)

像fransisco所说的那样,您可以更轻松地分离代码。我的意思是,如果您在JavaScript代码中实例化所有小部件,您的JavaScript将变得非常大,并且您的HTML通常很小(仅包含用于放置小部件的“容器”节点)。

更好的性能:我必须同意你的看法确实会降低性能,因为你必须解析整个页面,但你可以通过禁用parseOnLoad并仅通过解析来优化它您实际需要的DOM节点。在我工作的公司,我们通过将所有Dojo小部件标记放在具有特定类名的<div>内来实现。然后在我们的JavaScript代码中,我们执行以下操作:

query(".containsDojo").forEach(node) {
    parser.parse(node);
});

HTML和JS之间没有切换:HTML和JS之间的切换使您更容易理解代码并拥有上下文。例如,如果您需要通过小部件B修改小部件A,小部件B放在名为C.html的页面上。然后,您可以轻松查找小部件A,因为您知道它位于哪个页面以及它位于何处(顶部,底部,......)。如果您将所有内容都放在JavaScript文件中,那么您将很难管理代码,因为您不知道窗口小部件在什么情况下被初始化。您必须查看整个JavaScript代码,因为可以在代码中的任何位置初始化窗口小部件。

轻松动态更改内容:如果您需要动态内容,我通常会自己创建某种小部件并将JavaScript逻辑放在那里,以便我的“主要”JavaScript和HTML代码看起来仍然干净。您始终可以使用dijit/registry模块更改内容中的某些内容。

易于阅读和维护:我完全不同意这一点,类似于我在上一段中关于HTML和JavaScript之间切换的说法。我的意思是,dijit/form/TextBox和普通的HTML输入字段之间有什么区别?不多,它们都是UI项目。然而,如果我按照你的想法,我会将TextBox放在JavaScript代码中的某个位置以及HTML中的普通HTML输入字段中。 HTML不仅为您提供了上下文,还集中了所有UI元素。