jQuery和javascript有什么区别?

76

最近我偶然发现一些JavaScript论坛(遗憾的是,链接已经不知道被放在哪儿了),在那里你可以感受到人们对jQuery的真正厌恶,认为它不好用?

大多数争论似乎都有道理。

现在,我真的很喜欢jQuery,主要是因为它让我专注于想要做的事情,而不是浏览器不一致性,并且它实际上使得具有酷炫(或者说过度使用的)效果的AJAX变得有趣。

但是,如果jQuery的核心确实存在问题,我不想像实际上依赖它一样依赖它。

我不想再开始关于哪个框架最好的争论了……但是……哪个框架最好呢(开玩笑)?作为一个使用案例,考虑一下小到中型网站及其管理。

我只是试图弄清楚,是否在某个框架中使用一些功能还是纯JavaScript中使用几个我的函数真的会有所区别。

编辑:

实际上,我试图进行一个正常的客观讨论:

  1. 使用框架还是纯JavaScript
  2. jQuery与其他框架的比较

因为jQuery似乎是最容易上手并具有最快速的学习曲线。然而,有些人就是不理解它,认为我在引发争论(但实际上我没有)。我实际上投票要重新开放这个问题。

我也很感兴趣:

  • jQuery是否严重依赖浏览器嗅探?这可能会成为未来的潜在问题吗?为什么?
  • 我找到了很多JS选择器引擎,有任何AJAX和FX库吗?
  • 除了浏览器嗅探和个人对John Resig的“厌恶”之外,为什么jQuery是错的?

jQuery实际上是最被使用的框架之一。


1
"我不想再就哪个框架最好而引发争论了。","哪个框架最好?" 什么?" - Filip Ekberg
1
@Jimmy - 是的,但大多数情况下你总是看到一个观点 - 在jQuery友好的网站上,“jQuery ftw”,在一些js论坛上,“jQuery sucks”,你从来没有看到过并排比较。 - Adam Kiss
3
这是主观的、有争议的内容,如果不关闭的话,应该设为社区维基。 - Filip Ekberg
1
@Filip说了一些话并且自己又否认了,这有点像是一个玩笑...算了>.< - Adam Kiss
2
@Adam 我看过了。 我明白你不是想引发争端。请阅读我写的内容。 我没有说你这样做了。 我是在说这是多余不必要的。 - Jimmy
显示剩余7条评论
6个回答

42

这一切都与性能和开发速度有关。当然,如果你是一位优秀的程序员并且设计出真正适合你需求的东西,那么你可能会比使用JavaScript框架实现更好的性能。但是,你有时间自己完成所有工作吗?

我个人认为JavaScript非常有用,但同时也被过度使用了。如果你真的需要它,那么最好使用一个框架。

现在就要选择框架了。据可靠测试,你可以在http://ejohn.org/files/142/ 找到其中之一。另外取决于哪些插件可用以及你打算如何使用它们。我开始使用jQuery,因为它似乎得到了维护和完善,即使它当时不是最快的。我没有后悔过,但自那以后我也没有测试过其他任何东西。


目前来看,这正是我的想法,但有关jQuery在“核心”中做错了所有事情以及评估浏览器等方面的说法让我感到困惑。 - Adam Kiss
1
jQuery不是一个框架,而是一个实用库。 - Val Kornea
现在,也许吧。将近10年前,情况有些不同 :) - Xr.

29

我认为你应该先选择较难的方式进行学习,这将使你成为一个更好的程序员,当出现独特的问题时你也能够解决它。一旦你能够使用纯JavaScript实现,那么使用jQuery来加速开发只是额外的奖励。

如果你能用较难的方式实现,那么用简单的方式也可以做到,反之则不行。这适用于任何编程范例。


11

像其他优秀的 JavaScript 框架一样,jQuery 为您提供与浏览器平台无关的功能,封装了所有您可能不关心或不想关心的复杂性。

我认为使用框架比纯 JavaScript 并从头开始做所有事情更好,除非您的使用非常有限。

我强烈推荐 jQuery!


我已经使用过jQuery,我更感兴趣的是为什么它更好(抛开“易用性”不谈)。 - Adam Kiss
1
由于其优雅和持续的新功能,至少我还没有看到任何JavaScript框架拥有如此快速增长的用户社区和支持。谢谢。 - Mahesh Velaga
3
@Greg:我不明白你的评论。我是不是在错误的语境中使用了“优雅”这个词? - Mahesh Velaga

10

"我实际上试图进行一次正常的客观讨论,讨论以下两个问题的利弊:1.使用框架而不是纯 JavaScript 和2.jQuery与其他库相比,因为 jQuery 似乎是最容易使用且学习曲线最陡峭的。"

仅仅因为您不想学习基础语言而使用任何框架是绝对错误的,不仅适用于JavaScript,也适用于任何其他编程语言。

"除了浏览器探测和个人对 John Resig 的“憎恨”之外,jQuery 有何不当之处?"

大部分反感来自夸大的粉丝狂热主义,导致论坛中“使用 jQuery”成为每一个 JavaScript 问题的答案,以及过度使用,使得简单的语句,如变量声明,都需要通过库调用来完成。

然而,也存在一些合理的技术问题,例如共同的罪责产生不可读的代码和额外开销。当然,这两个问题都更加恶化于开发者经验不足,而不是库本身。


8
  • jQuery是否高度依赖于浏览器嗅探?未来可能会出现潜在问题吗?为什么?

不会 - 有$.browser方法,但它已被弃用并且没有在核心中使用。

  • 我找到了很多JS选择器引擎,还有任何AJAX和FX库吗?

当然。人们经常选择jQuery是因为它可以很好地处理AJAX和动画,并且易于扩展。 jQuery不使用自己的选择器引擎,而是使用Sizzle,这是一个非常快速的选择器引擎。

  • 除了浏览器嗅探和个人对John Resig的“厌恶”,是否有任何理由认为jQuery是错误的?

没有 - 它快速、相对较小且易于扩展。

就我个人而言,我喜欢知道随着浏览器包含更多东西(例如classlist API),jQuery将更新以包括它,这意味着我的代码始终以最快的速度运行。

如果您感兴趣,请阅读源代码,http://code.jquery.com/jquery-1.4.3.js - 您将看到基于最佳情况逐渐向旧版浏览器回溯添加功能的过程 - 例如,从1.4.3中的parseJSON方法的一个部分:

return window.JSON && window.JSON.parse ?
    window.JSON.parse( data ) :
    (new Function("return " + data))();

如您所见,如果window.JSON存在,则浏览器使用原生JSON解析器;如果不存在,则避免使用eval(否则压缩器将无法压缩该部分),并设置一个返回数据的函数。这种先假设现代技术,然后降级到旧方法的想法贯穿其中,意味着新浏览器可以使用所有新特性而不损失传统兼容性。


使用jQuery进行动画可能不是最佳选择,因为存在性能问题。请参考https://css-tricks.com/myth-busting-css-animations-vs-javascript/。GSAP也是一个不错的包,请考虑使用。 - gdbj

5

Jquery VS javascript,我完全反对这个问题中的OP。比较是发生在两个相似的事物之间,而不是在这种情况下。

Jquery是Javascript。它是一个Javascript库,旨在减少模糊的编码,收集常用的Javascript函数,已经被证明有助于高效和快速的编码。

Javascript是源代码,实际的脚本,浏览器会响应它。


2
在我看来,想要理解这个问题的人就会理解它。这里提出的观点是,是否值得实现jQuery,或者程序员是否应该使用纯净的JavaScript。 - Bunkai.Satori
@Bunkai.Satori,这基本上是询问jQuery与Javascript的区别的问题。 - Starx
@Tiberiu-IonuțStan,或者为了一个简单的操作而有很多行代码。 - Starx
1
在我看来,JQuery 的核心问题是虽然它增加了开发的便利性,但令人不安的是有大量的人认为 JQuery 是一种独立的语言,是 JavaScript 的替代品。因此出现了让人眼花缭乱的问题标题...以及大量编写不良代码的情况,这些代码并没有完全理解 DOM / JQuery / JavaScript 的操作方式。 - Katana314
1
@Katana314,我同意。像jQuery这样的流行库是对一种语言的误解。可悲的是,在求职申请中,你会看到JavaScript和jQuery专家。另一个例子是Ruby on Rails,它非常接近于一个例外,但仍然不是一种不同的语言。至少可以说这是新手常见的错误。一旦他们的代码达到企业级别,他们将学习在干净的JavaScript中编写代码。 - Starx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接