根据我自己的经验,我喜欢程序化编码。在这里列举一些好处:
但是,它使用声明性编码在这里联系了很多用户。我的问题是:使用声明性编码有什么好处?哪一个是道场大师的最爱?
答案 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元素。