我几年来一直是dojo(核心)用户。在道场空间上建立我自己的小部件;忽视dijit和dojox。在我自己的世界工作。这是它的优点,但我一直有这样的感觉,即在构建另一个选项卡式面板,旋转木马或对话框时,我正在重新发明轮子。所以我决定使用dijit。Dijit的优雅降解
用我自己的小部件,我给自己定一些基本规则:
- 一个小部件都必须适当地[当没有JS加载]降解的可访问性和搜索引擎优化
- 应该有后无重画js的是(所有HTML之后总是包含在页面上,只是身体结束标记之前)加载
- 没有内嵌JS(脚本必须是独立于HTML)
问题:
Dijit有两种被实例化的方法:声明式和编程式。无论哪种方式似乎打破了其中一个规则。
a。 声明实例:
看起来要么是这样的:
<div dojoType="MyFirstWidget">
<ul>
<li dojoAttachPoint="counter">0</li>
<li><a dojoAttachEvent="_updateCounter" href="#">Update</a></li>
</ul>
<script type="dojo/connect" event="onClick" args="evt">
console.log("This will execute after of the Button dijit's onClick method has been called.");
</script>
</div>
正如你所看到的,这显然打破了第三个规则(没有内嵌的js)。
b。 编程实例:
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.declare("MyFirstWidget", [dijit._Widget, dijit._Templated], {
templateString: "<div class='awesome'>0</div>",
postCreate: function() {
console.log("postCreate");
}
});
(new MyFirstWidget()).placeAt(dojo.body());
而这样一来,规则1 & 2被打破。 (1)没有可访问性或SEO价值(2)一旦模板被设置,浏览器将需要重新绘制整个页面。
问题:是否有可能(和实际)使用dijit,并仍然遵循规则?