gpt4 book ai didi

javascript - dojo 中以编程方式创建的小部件与以声明方式创建的小部件之间的区别?

转载 作者:数据小太阳 更新时间:2023-10-29 04:40:42 26 4
gpt4 key购买 nike

我知道在 dojo 中我们可以通过两种方式创建任何小部件,

  1. 以编程方式
  2. 声明式地

为了以编程方式创建小部件,我们将使用 JavaScript,而为了以声明方式创建小部件,我们将在 HTML 标记中使用 dojo 属性。

谁能解释一下它们之间的区别是什么?

最喜欢哪一个,为什么?

最佳答案

区别

嗯,这两种方式之间存在一定的差异。在声明方式中,所有配置都基于 HTML 属性,如 dojo-data-props还有一些其他属性,如值、标题、...。因此,您创建的 DOM 节点实际上用作某种占位符。

当您通过编写 JavaScript 代码创建小部件时,您还必须提供要附加的 DOM 节点,但最大的区别在于它不会从该 DOM 节点复制 HTML 属性。这里的DOM节点只是作为容器,不是占位符。


首选

没有最受青睐的解决方案,它通常取决于您的应用程序的要求以及您认为最简洁的开发方式。

我个人喜欢声明性标记,因为最终它是用户界面的一部分。但是,您可以想走多远就走多远。我也见过有人以声明方式创建商店和小部件事件处理程序,但我个人更喜欢用 JavaScript 编写它们,因为它们不是用户界面的一部分。

还有其他原因可能会改变您创建小部件的方式。例如,声明性标记的最大缺点之一是您需要解析页面(例如使用 parseOnLoad )。这通常比以编程方式创建小部件要慢。您可以通过仅解析某些 DOM 节点来改进它,但是您必须编写额外的代码(而且它仍然不会更快)。

只是一个小纸条;这并不意味着声明方式很慢。这只是一个应该执行的额外操作,因此速度有点慢,但最终用户可能甚至看不出差异。

然而,声明式方式的一个优点是,在加载页面时,最终用户能够看到占位符。如果您选择了正确的占位符(例如,<select> 代表 dijit/form/FilteringSelectdijit/form/ComboBox),最终用户至少会看到一些东西。如果您以编程方式创建所有内容,则在执行 JavaScript 代码之前,最终用户将看到一个空白页面。

因此,如果性能是要求之一,那么您可以选择以编程方式创建它们。如果您希望将表示层与业务逻辑分开的代码分离,那么我建议使用声明方式。

但最终,这两种解决方案都很好。

关于javascript - dojo 中以编程方式创建的小部件与以声明方式创建的小部件之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19440556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com