我注意到,在监控/尝试回答常见的jQuery问题时,有一些实践使用javascript,而不是jQuery,实际上可以让你写得更少,做得更…同样的量。而且还可能带来性能上的好处。

具体例子

$(this) vs this

在引用已单击对象id的单击事件中

jQuery

$(this).attr("id");

Javascript

this.id;

还有其他类似的常见做法吗?某些Javascript操作可以更容易地完成,而不需要使用jQuery。或者这是一种罕见的情况?(jQuery的“快捷方式”实际上需要更多的代码)

编辑:虽然我很欣赏关于jQuery和纯javascript性能的答案,但实际上我正在寻找更多量化的答案。在使用jQuery时,使用纯javascript而不是使用$()会更好(可读性/紧凑性)的实例。除了我在最初的问题中给出的例子。


当前回答

有一个框架叫做。你猜怎么着?香草JS。希望你能听懂这个笑话……为了性能,它牺牲了代码的可读性。将它与jQuery进行比较,您可以看到通过ID检索DOM元素几乎快35倍。:)

因此,如果你想要性能,你最好尝试Vanilla JS,并得出自己的结论。也许你不会遇到JavaScript在像for循环这样的密集代码中挂起浏览器的GUI/锁定UI线程。

Vanilla JS是一个快速、轻量级、跨平台的框架 构建令人难以置信的强大JavaScript应用程序。

在他们的主页上有一些性能比较:

其他回答

有一个框架叫做。你猜怎么着?香草JS。希望你能听懂这个笑话……为了性能,它牺牲了代码的可读性。将它与jQuery进行比较,您可以看到通过ID检索DOM元素几乎快35倍。:)

因此,如果你想要性能,你最好尝试Vanilla JS,并得出自己的结论。也许你不会遇到JavaScript在像for循环这样的密集代码中挂起浏览器的GUI/锁定UI线程。

Vanilla JS是一个快速、轻量级、跨平台的框架 构建令人难以置信的强大JavaScript应用程序。

在他们的主页上有一些性能比较:

这是我个人的观点,但无论如何jQuery是JavaScript,我认为理论上它不能比普通JS表现得更好。

但实际上,它可能比手工编写的JS执行得更好,因为手工编写的代码可能不如jQuery有效。

总之,对于较小的东西,我倾向于使用普通的JS,对于JS密集的项目,我喜欢使用jQuery,而不是重新发明轮子——它也更有效率。

和往常一样,这次聚会我要迟到了。

并不是额外的功能让我决定使用jQuery,尽管它很有吸引力。毕竟,没有什么能阻止您编写自己的函数。

事实上,在修改DOM以避免内存泄漏时,有很多技巧需要学习(我说的是你的IE)。有一个中心资源来为我处理所有这些问题,由比我优秀得多的JS程序员编写,不断地审查,修改和测试,这是上帝的恩赐。

我想这应该属于跨浏览器支持/抽象的观点。

当然,jQuery并不排除在需要时直接使用JS。我总觉得这两者似乎天衣无缝地配合在一起。

当然,如果您的浏览器不支持jQuery,或者您支持低端环境(旧手机?),那么一个大的.js文件可能是一个问题。还记得jQuery曾经很小的时候吗?

但通常情况下,性能差异并不是一个值得关注的问题。只要够快就行。由于每秒钟都要浪费千兆赫的CPU周期,我更关心编码员的性能,这是唯一不会每18个月功率翻一番的开发资源。

也就是说,我目前正在寻找可访问性问题,显然. innerhtml是一个有点不不。jQuery当然依赖于. innerhtml,所以现在我正在寻找一个框架,它将依赖于允许的一些乏味的方法。我可以想象这样的框架会比jQuery运行得慢,但只要它的性能足够好,我就会很高兴。

正确的答案是,当使用jQuery而不是“普通的”原生JavaScript时,您总是会受到性能损失。这是因为jQuery是一个JavaScript库。它不是什么花哨的JavaScript新版本。

jQuery强大的原因在于,它使一些在跨浏览器情况下过于繁琐的事情变得简单(AJAX就是最好的例子之一),并平滑了无数可用浏览器之间的不一致性,并提供了一致的API。它还很容易促进链接、隐含迭代等概念,以简化一起处理元素组的工作。

学习jQuery不能代替学习JavaScript。你应该对后者有一个坚实的基础,这样你才能充分体会到了解前者会让你更容易。

-编辑以包含评论-

As the comments are quick to point out (and I agree with 100%) the statements above refer to benchmarking code. A 'native' JavaScript solution (assuming it is well written) will outperform a jQuery solution that accomplishes the same thing in nearly every case (I'd love to see an example otherwise). jQuery does speed up development time, which is a significant benefit which I do not mean to downplay. It facilitates easy to read, easy to follow code, which is more than some developers are capable of creating on their own.

在我看来,答案取决于你想要达到的目标。如果正如我根据您对性能好处的参考所推测的那样,您希望获得应用程序的最佳运行速度,那么每次调用$()时使用jQuery都会带来开销。如果你追求可读性、一致性、跨浏览器兼容性等等,那么肯定有理由支持jQuery而不是“原生”JavaScript。

其他人的回答集中在“jQuery vs.纯JS”这个宽泛的问题上。从你的OP来看,我认为你只是想知道如果你已经选择使用jQuery,什么时候使用普通JS更好。你的例子是一个完美的例子,当你应该使用香草JS:

$ (this) (.attr’id’);

既慢,(在我看来)可读性较差:

this.id。

它更慢,因为你必须旋转一个新的JS对象,只是为了用jQuery的方式检索属性。现在,如果你要使用$(this)来执行其他操作,那么无论如何,将jQuery对象存储在一个变量中并对其进行操作。但是,我遇到过很多只需要元素的属性(比如id或src)的情况。

还有其他常见的做法吗 像这样的吗?某些Javascript 可以完成操作 更简单,无需引入jQuery 混合。或者这是一种罕见的情况?( jQuery的“快捷方式”实际需要 更多的代码)

我认为最常见的情况是你在你的帖子中描述的;人们不必要地在jQuery对象中包装$(this)。我最常看到的是id和value(而不是使用$(this).val())。

编辑:这里有一篇文章解释了为什么在attr()情况下使用jQuery比较慢。坦白:从标签维基上偷来的,但我认为这个问题值得一提。

再次编辑:考虑到直接访问属性的可读性/性能影响,我认为一个好的经验法则可能是尝试使用它。如果可能,<attributename>。在某些情况下,由于浏览器不一致,这种方法可能不起作用,但如果它不起作用,最好先尝试这种方法,然后再求助于jQuery。