jQuery有哪些限制?

12

Joel一直说使用第三方库时要小心。从我的初步印象来看,jQuery非常棒。那么在使用它时我应该注意什么?有哪些限制?随着我使用它的次数增多,我将遇到哪些麻烦?

12个回答

8

我已经广泛使用它,不得不承认,我还没有遇到任何严重的难题!我遇到了几个bug,需要自己快速修复,然后在下一个jQuery版本中进行额外的测试,以确保bug已被正确处理,但这适用于任何第三方库而不仅仅是jQuery。

我认为这是一个非常棒的库,虽然关于第三方库的建议很有价值,在这个Web 2.0世界中,Javascript的使用量已经飙升,浏览器之间存在许多小差异,拥有一个良好维护的库可以真正加速开发,因为它节省了你自己做所有工作的开销。

我猜如果我要发出一个警告,那就是确保你不要过度使用它-虽然它通过抽象掉你不需要担心的大量逻辑来加速Javascript开发,但总会有风险,即你会开始编写效率低下的应用程序,因为你不知道你正在向浏览器提出什么样的要求。因此,我建议你使用Firebug等工具进行大量分析,以检查底层发生了什么。


JQuery 1.0(FYI:http://jquerymobile.com/)最近已经发布。您对此有什么看法?另外,如果您能回答我的PhoneGap问题,我将不胜感激。 - Muhammad Maqsoodur Rehman

7

@ mjc

$("a tip")
.you()
.can()
.chain()
.stuff()
.like()
.this();

或者定义一个变量,用jQuery函数处理:

var $tip = $("a tip");
$tip.choo();
$tip.choo();
$tip.train();

6

我在使用jQuery时遇到的一个问题是,你需要将很多项链接在一起,如果不小心,很快就会变得难以阅读。

一个例子可以说明这一点,它来自John David Anderson的博客:

有个人写了一个日志记录函数,可以帮你找到你的位置 whenYoureCoding() 在(jQuery) trainWreck() 中间.

我能看出将事物链接在一起的力量,但我的猜测是,如果你需要在运行中记录控制台输出,那么你可能已经走得太远了。也许一周后你已经无法阅读它。


我同意jQuery可能会因为一些疯狂的选择器加上链式方法而造成潜在的混乱。 - Aaron Powell
1
根据我的经验,这是JQuery唯一真正的缺点。链式编程是它最强大的特性之一,但保持代码易读可能会有些棘手。JQuery小巧、快速而且非常棒。(Joel的主要产品FogBugz甚至使用它。) - Stefan Rusek
7
这不应该被视为jQuery的缺点。你可以在任何语言或框架中编写丑陋、难以维护的代码。没有必要因为人们滥用了强大的功能就抨击jQuery。 - Ryan McGeary
1
与编程语言的任何其他特性一样,使用它保持良好可读性应该是开发人员的责任。我们不能将责任归咎于链式本身。 - Marcel
空格不是一种罪行。听说过吗? - King Friday
显示剩余4条评论

2

jQuery是非常好的 - 它可以做任何javascript能做的事情,但更快,并且代码更少。它的唯一限制是作为客户端脚本语言的javascript固有的限制。像任何工具一样,可能会被误用,但除非你的脚本需要非常基本,否则几乎没有理由不使用它。


2

2

@BrilliantWinter

jQuery并不是一个臃肿的库,它是当中最小的库之一。

所有的函数都是jQuery对象的扩展,这意味着您可以删除您不需要使用的任何功能,并使库的占用空间比其默认大小(15kb,经过压缩和Gzip处理)更小。

jQuery - 以及其他所有库 - 提供了一个API,它在所有A级浏览器中都是相同的。这种抽象使您的代码更清晰,减少出错的可能性。

最后,jQuery被主要的“玩家”所使用。像Google、Dell、Digg和NBC这样的公司使用该库。这不仅是一个重大的认可,而且也保证了jQuery的开发人员在修订库时非常谨慎,确保不会出现任何错误或引入任何错误。


2
@BrilliantWater - 大多数人使用jQuery并不是为了“学习”,而是因为它比自己创建所有方法更快、更容易使用,而且会带来更少的麻烦。而整个“臃肿”的争论完全没有意义;jQuery是最小的库之一,随着越来越多的人使用宽带,这已经不再是一个问题了。
此外,由于jQuery由GoogleCode托管,因此用户的缓存中可能已经存在,因为许多网站都在使用它!
jQuery很棒!我一直对自己说我需要学习另一个库,但我真的不需要。jQuery拥有我所需要的一切。我知道它不适用于所有项目,但它在大多数项目中都有一席之地!

1

我发现在编写任何有用的javascript时,jQuery都是不可或缺的。尽管如此,我曾经在一个网站上工作时想要做动画效果。我建议不要使用flash,而是使用jQuery包装得非常好的相对“简单”的动画效果,例如淡入淡出和滑动等。最终,浏览器无法承受这些效果(特别是IE,但FF也显示出压力),我们不得不将几乎所有的效果都缩小。

使用jQuery编码和实验非常有趣。它拥有一个非常棒的开发者社区,可以快速解决问题。只要小心不要过度使用就好了! :)


1
jQuery唯一的缺点是它太简单易用了。新手使用它很容易入门,但有时也会做出一些奇怪且接近愚蠢的事情。除此之外,jQuery非常优美并由天才和他的聪明程序员小组精心制作,确保跨浏览器质量,减少了开发者的大量工作。如果你不喜欢jQuery,那你可能有些偏执,并且可能没有经常洗澡。
更新:
这是我很久以前的回答。现在如果您使用querySelector和MDN参考,jQuery实际上已经不再必要,因为浏览器大致相同,除非您仍然生活在IE8的死亡地带。jQuery还存在全局性问题,如果您正在构建现代JavaScript,则不利于库的模块化。在此刻,jQuery除了具有一些不使用模块语法库的老式插件外,实际上并没有什么用处。
开始考虑将JavaScript进行模块化,因为这是紧随jQuery之后的趋势。关注ES6 / ES2015。开始使用React / React Native或Angular 2来制作应用程序,因为那已经达到了某种程度。

抱歉,John Resig。现在的人们可能会问“John是谁?”尽管他在我心中仍然是一个天才。但我希望他能够超越自己,创造出更好的东西。

有趣的是,事情是如何变化的。


0

如果 jQuery 不适合,您可以随时考虑其他框架。 这里是MooTools的示例。

MooTools是一款紧凑、模块化、面向对象的JavaScript框架,专为中高级JavaScript开发人员设计。它通过优雅、文档良好、一致的API,让你编写强大、灵活和跨浏览器的代码。


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