css - 呈现 dijit 小部件的最快方法

标签 css render dojo

呈现 dijit 小部件的最快方法是什么? 我知道编程方式比声明方式更快。 ( Some reference )

我有一个加载速度太慢的自定义小部件(它是一个带有组合框、按钮和其他用于添加过滤器等的小型 dijit 小部件的数据网格)。
查看源代码,我发现所有 dijit 小部件都是以编程方式创建的,但是插入它们的 DOM 节点也是以编程方式创建的。 这是“正确”的方式吗?

我正在尝试加速这个小部件的渲染,目前我的选择是结合一个速度模板(我的公司使用struts2 + velocity)来创建DOM节点,用< strong>以编程方式创建小部件(使用 placeAt 和类似方法将小部件插入已构建的 DOM 节点)。
它会很好地工作,但遗憾的是所有的 css 类都被 dijit 覆盖,所以我必须再次覆盖它们,这会导致合理的开销

在模板中我这样写:

<input id="idOfAnExistingDomNode" class="myCssClass" />

要在该 DOM 节点中插入 FilteringSelect,我必须这样写:

var fieldSelect = new dijit.form.FilteringSelect({
    store : jsonStore,
    searchAttr : "caption",
    labelAttr : "caption",
    selectOnClick : true,
    value : "Content"
}, "idOfAnExistingDomNode");
fieldSelect.domNode.className += " myCssClass";

最后一行是必要的,因为 myCssClass 在创建 FilteringSelect 的过程中被覆盖了。
有什么办法可以避免这个问题吗?
或者,也许,我正试图以错误的方式做这件事?我不完全确定“速度模板”的事情。

注意:Dojo 版本是 1.5,不,遗憾的是我们不能将它升级到更新的版本。

请原谅我糟糕的英语。

最佳答案

通常,一种更快的实例化小部件的方法是在临时 div 中创建它们,然后将该 div 移动到 DOM 上。您是否尝试过分析此实例化中到底慢了什么?我的一部分想知道是否花太多时间等待数据,因为一些小部件 + 具有合理页面大小参数的网格应该不会花费很长时间来加载。

关于你的类(class)问题,奇怪的是道场没有混入现有类(class)。也就是说,您可以先在节点上进行查找,获取类属性,然后将其指定为 创建 FilteringSelect 时混合对象中的类属性。如果这样做,请确保将类用引号引起来,否则较旧的 IE 会拒绝它。

关于css - 呈现 dijit 小部件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953631/

相关文章:

html - 如何使用 css 和 flexbox 修复输入的垂直间距

django 模板 - 解析字符串变量中的变量

c# - 对 Razor 渲染脚本的引用

javascript - Horizo​​ntalSlider 的连续范围

c# - 如何使用 dom-construct 插入带有查询字符串的 iframe 并在 Controller 中读取请求?

javascript - 如何调整adminLTE模板中的header和navigation bar的高度?

javascript - 如何为柱形图赋予动态颜色

html - 前缀和分类一切

backbone.js - 在 Backbone View 渲染上动态设置 className

javascript - 如何使用javascript重置div中的滚动位置