dojo - 复制 dijit 小部件而不是重新创建它

标签 dojo widget clone duplication

有没有一种方法可以复制或克隆 dijit 小部件?

基本上,想法是通过最小化小部件创建时间来提高页面呈现性能。

我们有一个单页网络应用程序,我们不会在用户执行任何操作时重新加载整个页面。

事件流程如下,

  1. 主页由浏览器加载。它包含一个 dijit ContentPane,它充当主容器并使用各种其他 dijit 小部件(如文本框、选项卡、日期字段、增强型网格等)显示整个页面。

  2. 用户执行一个 Action (例如点击 dijit 按钮)

  3. 应用程序向服务器发送 ajax 调用,服务器处理按钮点击事件并生成下一页的 UI。

  4. 浏览器从 ajax 调用收到成功响应并调用 dijit ContentPane 的刷新方法。这会触发现有小部件的销毁,并创建一组新的小部件并将其放置在适当的位置。 (而不是刷新整个页面)

  5. 用户再次执行某些操作并再次调用刷新方法,这会触发现有小部件的销毁,并创建一组新的小部件并将其放置在适当的位置。

由于这种架构,浏览器必须销毁现有的小部件并一次又一次地重新创建它们。这会导致性能下降。

我们的想法是让一组小部件在浏览器上始终可用,将它们克隆并放置在适当的位置并更新它们,而不是每次都重新创建。

最佳答案

是的,这可以通过名为 _AttachMixin 的东西实现。

基本上,您的小部件需要将事件监听器附加到 HTML 文档这一事实是无法回避的。不过可以减少的是 Dijit Widget 生命周期中生成 DOM 的时间。众所周知,像 dijit/form/Button 这样的简单 Dijit 小部件在 div 中有一个 div 等。

这里有详细解释http://dojotoolkit.org/reference-guide/1.9/dijit/_AttachMixin.html

这是一个使用 Node.JS 作为后端的例子。 http://jamesthom.as/blog/2013/01/15/server-side-dijit

这是一个棘手的问题,而且这个概念没有得到非常详尽的解释。如果您的后端不是 Node.JS,则必须手动制作小部件字符串并将其作为对 AJAX 的响应传递,并按照第一个链接(引用文档)中的示例进行操作

我们已经在客户端很好地呈现了我们应用程序的许多小部件。一种简单得多的方法是在需要时简单地显示/隐藏(而不是渲染和销毁)小部件。我假设您应用的访问策略将关注数据,而不是哪个人可以访问哪个小部件。

关于dojo - 复制 dijit 小部件而不是重新创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27603334/

相关文章:

javascript - dojox/图表/Chart2D : how to format the label of minor tick?

javascript - 以编程方式触发点击处理程序

css - 如何为 dojo ValidationTextBox 提供自定义样式?

java - 如何在 Java 中创建与旧列表相同类型的新列表?

Javascript - 在自身内部克隆数组

具有 CLONE_FILES 泄漏 fcntl 锁的克隆(2)?

layout - Dijit.Dialog 中的 Dojo/Dijit BorderContainer

flutter - 我可以使用showDialog在Flutter中向后传播数据吗?

javascript - 如何将目标 ="blank"添加到 Pinboard.in Linkroll 小部件?

Android如何增加评分栏中星星的高度和宽度