渲染 dijit 小部件的最快方法是什么?我知道编程方式比声明方式更快。(一些参考)
我有一个加载太慢的自定义小部件(它是一个带有组合框、按钮和其他用于添加过滤器等的小型 dijit 小部件的数据网格)。
查看源代码,我看到所有 dijit 小部件都是以编程方式创建的,但插入它们的 DOM 节点也是以编程方式创建的。这是“正确”的方式吗?
我正在尝试加快这个小部件的渲染速度,目前我的选择是结合速度模板(我的公司使用 struts2 + velocity)来创建 DOM 节点,以及以编程方式创建的小部件(使用 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,不,遗憾的是我们不能将它升级到更新的版本。
请原谅我糟糕的英语。