Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dojo项目中的声明性编码还是编程性编码?_Dojo_Declarative - Fatal编程技术网

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

Dojo项目中的声明性编码还是编程性编码?,dojo,declarative,Dojo,Declarative,根据我自己的经验,我喜欢编程编码。这里列举一些好处: 更好的性能:无需解析 html和javascript之间没有切换:没有html,代码中的所有内容(使用css控制布局) 易于动态更改内容 易于阅读和维护 但是,这里有很多用户使用声明式编码。我的问题是:使用声明性编码有什么好处?哪一个是dojo大师的最爱 正如fransisco所说,您可以更轻松地分离代码。我的意思是,如果在JavaScript代码中实例化所有小部件,JavaScript将变得相当大,HTML通常会很小(只包含用于放置小部件的

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

  • 更好的性能:无需解析
  • html和javascript之间没有切换:没有html,代码中的所有内容(使用css控制布局)
  • 易于动态更改内容
  • 易于阅读和维护

  • 但是,这里有很多用户使用声明式编码。我的问题是:使用声明性编码有什么好处?哪一个是dojo大师的最爱

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

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

    query(“.containsDojo”).forEach(节点){
    parser.parse(节点);
    });
    
    HTML和JS之间无切换:HTML和JS之间的切换使您更容易理解代码和获得上下文。例如,如果您需要通过放置在名为C.html的页面上的小部件B修改小部件A。然后很容易找到你的小部件A,因为你知道它在什么页面上以及它的位置(顶部,底部,…)。如果将所有内容都放在JavaScript文件中,您将很难管理代码,因为您不知道小部件是在什么上下文中初始化的。您必须查看整个JavaScript代码,因为小部件可以在代码中的任何一点进行初始化

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


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

    利益分离。另外,我认为你的问题不适合这样。而且,我认为这个词是“命令式编程”,而不是“编程编码”。@francisco.preller:我在问dojo项目。我怀疑你是否理解我的问题。显然,您没有足够的经验使用dojo。我很感激迪米特里,他的回答对我帮助很大。我不能完全同意你的解释。在我当前的项目中,我们只使用编程dojo来插入小部件。以这种方式使用它有几个优点:您可以围绕dojo小部件编写包装器。如果某个属性将发生更改,则只需在1个文件中对其进行编辑。理论上,您可以从一个工具箱/框架切换到另一个工具箱/框架。你提到“管理这么大的javascript文件很难”的原因对我来说似乎不合法。这是一个架构问题。我们使用MVC(f)设计模式,并将每个文件拆分。我已经创建了某种动态加载程序来加载这些单独的文件,这样代码就会非常干净(而且很短)。我给了你一个“+”作为努力和解释,虽然在我看来,如果你使用的是MVC,那么声明性小部件标记将变得更加重要。您的控制器应该只处理用户操作,而不必关心按钮或小部件,这就是视图的用途。如果您需要一些复杂的行为,您确实可以使用编程小部件,但我会将它们封装在一个单独的小部件中,我会使用声明性的。这类似于其他JS MVC框架的工作方式,如AngularjS和指令或Ember.JS和组件。然而,使用MVC模式意味着您将“锁定”HTML,因此不可能使用其他框架或工具包。我的意思是,视图包含的不仅仅是简单的HTML元素,还有一些更复杂的东西。视图必须由框架“解释”才能与模型相结合,因此它代表最终的用户界面,看看AngularJS及其ng标记,带把手的Ember.js,甚至像Spring MVC这样使用JSTL的Java框架。但我认为我们在各自的方面都是对的,这可能就是为什么这个问题因为主要基于观点而被关闭的原因^^