根据我自己的经验,我喜欢程序化编码。在这里举几个好处:
- 更好的性能:无需解析。
- html和javascript之间没有切换:没有html,代码中的一切(使用css控制布局。)
- 易于动态更改内容。
- 易于阅读和维护。
但是,它在这里使用声明性编码吸引了很多用户。我的问题是:使用声明性编码有什么好处?哪一位是道场大师的最爱?
根据我自己的经验,我喜欢程序化编码。在这里举几个好处:
但是,它在这里使用声明性编码吸引了很多用户。我的问题是:使用声明性编码有什么好处?哪一位是道场大师的最爱?
就像 fransisco 所说,您可以更轻松地分离代码。我的意思是,如果您在 JavaScript 代码中实例化所有小部件,您的 JavaScript 将变得非常大,而您的 HTML 通常会很小(仅包含用于放置小部件的“容器”节点)。
更好的性能:我必须同意你的观点,因为你必须解析整个页面,所以它确实会降低性能,但是你可以通过禁用parseOnLoad
并只解析你实际需要的 DOM 节点来优化它。在我工作的公司,我们通过将所有 Dojo 小部件标记放在<div>
具有特定类名的 a 中来做到这一点。然后在我们的 JavaScript 代码中,我们执行以下操作:
query(".containsDojo").forEach(node) {
parser.parse(node);
});
HTML 和 JS 之间没有切换:HTML 和 JS 之间的切换使您更容易理解您的代码并拥有上下文。例如,如果您需要通过放置在名为 C.html 的页面上的小部件 B 来修改小部件 A。然后很容易找到您的小部件 A,因为您知道它在哪个页面上以及它的位置(顶部,底部,...)。如果您将所有内容都放在 JavaScript 文件中,您将很难管理您的代码,因为您不知道小部件是在什么上下文中初始化的。您必须查看整个 JavaScript 代码,因为可以在代码中的任何位置初始化小部件。
易于动态更改内容:如果您需要动态内容,我通常会自己创建某种小部件并将 JavaScript 逻辑放在那里,这样我的“主要”JavaScript 和 HTML 代码仍然看起来很干净。您始终可以使用该dijit/registry
模块来更改内容中的某些内容。
易于阅读和维护:我完全不同意这一点,类似于我在上一段中所说的关于 HTML 和 JavaScript 之间的切换。dijit/form/TextBox
我的意思是,a和普通的 HTML 输入字段有什么区别?不多,它们都是 UI 项。但是,如果我按照您的想法进行操作,我会将 TextBox 放在 JavaScript 代码中的某个位置,并将普通的 HTML 输入字段放在您的 HTML 中。HTML 不仅为您提供了上下文,而且还集中了所有 UI 元素。