Sizzle 和 document.querySelectorAll 有什么区别

What is the difference between Sizzle and document.querySelectorAll

据我所知,Sizzle 和 querySelector/querySelectorAll 是 CSS 选择器。 那么... loading Sizzle 和 doing 有什么区别:

Sizzle("my CSS query")

document.querySelectorAll("my CSS query")

此外,我知道 Sizzle returns 一个元素数组,而 querySelectorAll returns 一个 NodeList(在大多数浏览器中)。我还知道您需要加载 Sizzle,并且您只能对一个元素使用 document.querySelector

那么在性能上有其他差异吗?

编辑:我的问题关于Sizzle选择器引擎(和querySelectorAll)。请不要涉及jQuery.

Sizzle is a pure-JavaScript CSS selector engine designed to be easily dropped in to a host library.

他们说这是 jQuery 项目的衍生产品,但是当谈到 jQuery 和 Sizzle 之间的差异时,JQuery 是一个库构建以简化 javascript 人们发现难以理解的复杂语法,特别是初学者的网格。因此,如果您使用 JQuery,将会产生大量开销,因为 sizzlers 提供的服务相对较少。

它更喜欢使用 querySelector 而不是 Sizzler,因为它只是一个额外的开销,使用 VanillaJS 可以很容易地完成,所以为什么要浪费它。他们都做同样的事情。

Sizzle 是在 querySelectorAll 不存在的时候创建的。它的开发在 querySelectorAll 引入后继续进行,以解决 querySelectorAll.

早期实现中的浏览器错误

Sizzle 本身尝试直接使用 querySelectorAll 并且只会使用它自己的 DOM 遍历,如果不支持选择器或者知道给定浏览器版本有错误.因此,对于现代浏览器而言,性能上应该不会有明显差异,因为在这两种情况下都会使用 querySelectorAll

querySelectorAll 相比,Sizzle 允许定义自定义伪选择器,缺点是您无法从如今 querySelectorAll 提供的性能中获益。

所以现在,如果您不需要自定义伪选择器,就不再需要 Sizzle。仅当您需要针对已知存在错误的旧浏览器版本时才使用它。