【问题标题】:replace dojo.query with Sizzle?用 Sizzle 替换 dojo.query?
【发布时间】:2011-12-25 05:23:34
【问题描述】:

Dojo 有最慢的选择器 compared to other JS frameworks

我想知道是否可以在 Dojo 中使用 Sizzle 让 dojo.query 在幕后使用它?我认为它在 jQuery 中是这样使用的,所以在 Dojo 中也应该可以。

找不到有关如何执行此操作的任何信息。

PS 链接上的测试似乎正在积极开发中,并且每天都在变化,因此请确保您选择该页面上的最新版本。

编辑: 看来测试中的数字不正确,Dojo 和其他人之间的差异并没有那么大。这使得将 Sizzle 纳入 Dojo 的任务不值得。

【问题讨论】:

  • 我仍然希望看到它完成——在这个过程中,你有没有找到任何关于如何在道场中添加嘶嘶声的教程?

标签: javascript jquery dojo sizzle


【解决方案1】:

对此我没有确切的答案,但它绝对是可能的。根据dojo ticket 的说法,此功能已经存在很长时间了。

dojo query documentation 有一个名为 Alternate Selector Engines 的部分,其中包含指向 github repository 的链接,这似乎可以轻松替换 dojo 查询引擎。

通过执行dojo 的自定义构建,您可以在嘶嘶声引擎中自动烘焙。如果你看(源码分布)util/buildscripts/jslib/buildUtil.jsquery的参数:

"query": {
        defaultValue: "default",
        helpText: "Select a DOM query engine. Default value is the normal dojo.query engine. Using query=sizzle will use the Sizzle engine."
            + "Normal Dojo tests are not run routinely with the Sizzle engine. See dojo/_base/sizzle.js for the version of Sizzle."
    },

【讨论】:

  • 我不能再同意了 - 看起来确实可行 :) Dojo 文档很有趣 - 一旦安装,您就可以使用选择器引擎 - 但我该如何安装呢?哪个 Sizzle 版本与哪个 Dojo 兼容?找不到任何相关信息...希望自己尝试过的人能提供更多信息。
  • 显然dojo/_base下有一个不祥的query-sizzle.js文件。剧情变厚了……
  • @missingno 好发现。通过查看该文件,您似乎可以创建一个自定义构建的 dojo,它在嘶嘶声引擎中烘烤
【解决方案2】:

我质疑你的数字。 Others 对 Dojo 的查询引擎得出了相反的结论。它们都非常快,到了可能不会产生太大影响的地步。

【讨论】:

  • 好吧,我也不相信这些数字,但它们是通过在您自己的浏览器中在线运行测试产生的,所以唯一要质疑的是测试本身的质量,我希望它们的来源是开放的
  • @Ken Franqueiro 和 snover 修复了测试。它是虚假的,并且通过索引而不是选择器迭代 100 倍 - dojo.query(0)、dojo.query(1) 等。请参阅 jsperf.com/…
  • 好消息!现在 Dojo 并没有那么 远远落后,但它仍然比 jQuery 慢得多
  • 慢得多?我们从这个问题的基础出发,Dojo 的运行速度慢了大约 20000%,在这些特定的基准测试中它可能慢了 23%。足以在大多数应用程序中产生重大影响?也许吧,但我不会轻易得出这个结论。 Dojo 不仅仅是一个查询引擎,无论如何,DOM 查询最好由较新浏览器上的本地调用来处理。
  • 50% 对我来说要慢得多,我的测试是那里的第三个测试(Firefox 7.0.1),但它并没有那么糟糕,并且 Sizzle 集成变得不是一个非常合理的事情
【解决方案3】:

您无需将 dojo.query 替换为 sizzle。

你可以说 dojo.query,它应该使用 sizzle。

在道场配置中

var dojoConfig = {
    selectorEngine: "sizzle",
    async: true

};

使用 https://github.com/kriszyp/sizzle 就像你对任何其他 dojo 包所做的那样

http://dojotoolkit.org/reference-guide/1.9/dojo/query.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-08
    • 2012-09-27
    • 2012-05-15
    • 2011-05-23
    • 1970-01-01
    • 2011-01-06
    • 2013-06-21
    • 2014-03-06
    相关资源
    最近更新 更多