我读道场查询教程,看到Dojo限制查询?
// retrieve an array of nodes with the class name "odd"
// from the first list using a selector
var odds1 = query("#list .odd");
// retrieve an array of nodes with the class name "odd"
// from the first list using a DOM node
var odds2 = query(".odd", document.getElementById("list"));
,他们解释说,odds2比odds1更快,因为在#list DOM,而不是整个HTML DOM .odd odds2搜索。我想知道的是做odds1的好处是什么(除了更干净的代码,我猜)?因为在我看来,查询在id元素中搜索对象的任何情况下都应该始终使用odds2样式(假设使用正确的id和class html),那么dojo为什么不自动分析odds1中的查询字符串来调用odds2?
我明白了,但为什么dojo不简单地使用odds1的干净语法,而是调用更有效的赔率2 – Derek 2012-02-15 00:38:14
因此,看着选择器引擎(http://svn.dojotoolkit.org/src/dojo/trunk/selector /lite.js)它实际上看起来像它一样。 odd2查询只适用于ID为“list”的一个根节点,而odd1查询可以容纳具有公共类值的多个元素(甚至是一个公共的id值,尽管这不是有效的HTML)。我越看越代码越多,我认为除了选择器解析步骤和缓存根节点之外,其他两者之间没有任何性能差异。 – 2012-02-15 21:23:08
我一直在阅读acme.js(http://svn.dojotoolkit.org/src/dojo/trunk/selector/acme.js)选择器引擎(我认为这是默认引擎)并且只发生查询分析在第一次执行查询时,所以在对低效查询的后续调用中不存在差别。这个dojo查询教程在哪里? – 2012-02-15 21:29:37