我讀道場查詢教程,看到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