我为什么要使用jQuery?

(我知道其他人问了一个类似的问题,它被关闭为’议论’,但我真的很有兴趣理解围绕这个问题的争论。)

我非常了解JavaScript。 我已经专业写了多年了。 我已经内化了很多跨浏览器的不兼容性和粗略感,知道DOM操作就像我的手背,已经与业内一些最好的Web开发人员合作并获得了很多他们的魔力。

我一直在查看jQuery。 我理解javascript库的意义(我写了多少次动画,getElementsByClass和hide / show函数?)。 但说实话,学习一种并不复杂的全新语法似乎是浪费时间。 看起来我正在抨击墙壁,以便学习一个全新的JavaScript接口。

我在技术上不是工程师,所以也许我错过了什么。 有人可以拼出jQuery的权衡吗? 学习和理解jQuery语法真的比学习JavaScript更快吗?

在本土/手写代码上使用框架有几个很大的好处:

  • 抽象 。 我相信你为自己已经足够的JS以便能够从头开始编写动画而感到非常自豪。 你应该! 然而,从自己身上抽象出常见的function实际上是非常自由的。 您只需调用该方法并知道将执行内部并执行良好。 即使你自己编写低级别的东西非常快,现在仍然花费你的时间而不是解决今天的问题。

  • 共同语言 。 使用通用框架就像说一种通用语言。 您可以非常轻松地与其他开发人员协作,每个开发人员都可以在没有摩擦的情况下从其他地方开始。 (与进入使用本地库的应用程序相比,jQuery可以做的事情。)

  • 专家 。 从事jQuery的人都是JavaScript之 。 我真的,非常擅长JavaScript,你可能也是,但正常的好和jQuery之间有很大的区别。 一群疯狂的好人正在不断地研究一小部分常见function – 调整它,调整它,增强它以使其尽可能最好。 这代表了大量的工时,无论我们有多好,像你或我这样的人根本无法复制。 如果你和jQuery人一样好,你只能将你的才能与他们的人才结合起来,并为jQuery代码库做出贡献。 这是一个疯狂的人才大熔炉。

我在技术上不是工程师,所以也许我错过了什么。 有人可以拼出jQuery的权衡吗? 学习和理解jQuery语法真的比学习JavaScript更快吗?

jQuery不仅仅是Javascript的“另一个接口”。 它允许您以比相应的Javascript实现更紧凑和更简洁的方式表达自己。 与此同时,它更清晰,更强大。 具体而言,您获得的好处包括:

  • 表现力。 jQuery本质上是一个用于DOM操作和查询的DSL。 这种特异性是其实用性和有效性的主要来源。

  • 跨浏览器。 在很大程度上,jQuery是“一次编写,随处运行”。 即使在2009年,对于基于网络的平台来说,这仍然是一个令人惊讶的罕见壮举。 知道你不必浪费时间调试IE6上的模糊问题(好吧,大部分时间),这是令人欣慰和放心的。

  • 高度完整的文档。 作为一名开发人员,我奖励那些花时间详细说明所有移动部件应该做什么的API和框架。 没有什么比知道(1)事情足够稳定以至于写作文档不是试图击中移动目标而且(2)事情足够有用以至于他们吸引了足够多的人来充分充实文档。

总之,Javascript和jQuery之间的区别类似于汇编和高阶编程语言之间的差异。 虽然它们在技术上既是“机器语言的接口”又可以做类似的事情,但后者被认为更强大,因为它代表事物并迅速发展是多么容易。

如果不学习JavaScript,你就无法学习jQuery,如果不是JavaScript专家,你就无法成为jQuery大师。

也就是说,使用jQuery做事比使用“裸机”JavaScript要快得多。 而且,使用jQuery的方式比使用“裸机”JavaScript的方式更抽象。 此外,jQuery语法非常基础,并且一点也不难学,尽管您对jQuery的思考方式与您对“裸机”JavaScript的思考方式有很大不同,但是您可以更快,更快地完成。

社区支持

其他开发人员编写和测试代码,使您可以做您根本没有时间做的事情。 它不是做任何你不知道该怎么做的事情,而是关于快速,有效和高质量的事情(它已经过测试)。

我没有看到提到的一件事是该库被编写为在各种流行的浏览器和平台上跨浏览器工作:IE6 +,Firefox 2 +,Safari 3+

仅此一点就足以使用jQuery来编写自己的JavaScript并且必须自己担心跨浏览器问题。

从它的声音来看,你知道jQuery对DOM有很多相同的东西,我只能假设你多年来为自己构建了一个很好的DOM工具集,它集成了所有这些知识。 简而言之,不,您不需要使用jQuery。 但是,我们其他一些人对DOM的了解并不多,而且jQuery对游戏领域有所了解,因此我们可以继续为客户完成工作。

这并不是说你不应该学习 jQuery(而不是使用它)。 你可能会收拾一些你不知道的东西。 将其与其他DOM库(可能包括您自己的库)区分开来的3个主要特征是:

  1. 内置支持CSS选择器语法,对查找元素很有用
  2. 对包裹元素集合进行操作的方法
  3. 链接。 jQuery.prototype中的每个方法(带有“setter”行为)都会返回this

就个人而言,1)和3)不保持高额溢价。 但是2)对我来说是巨大的。 直到jQuery,我才意识到我的代码倾向于在一组节点而不是单个节点上运行(如果有人会问我,我会猜到相反的趋势)。 2)几乎消除了我的代码中的所有for循环(或.forEach或者我倾向于抽象它),这实际上是非常.forEach 。 现在我注意到这是我的代码必须在某个元素上运行的罕见场合。

开发速度和代码周转。

我在其他答案中没有提到的一件事是,最终,其他人将不得不维护您的代码。 如果它都是自定义的,那么它们将比使用更标准的库时更加粗糙。 如果您对此没有任何顾虑,并且您认为您不太可能需要任何真正光滑的jQuery模块,那么继续您正在做的事情。

对我来说,有几个好处,如开发速度等。

但最终归结为一件事: 它消除了大量的跨浏览器BS,它们可能耗费大量的时间和资源,所以我不需要处理它

jQuery允许您编写更简洁,更易于理解的代码。 许多人使用它,因此有许多插件可以与它一起工作,最大限度地减少膨胀。 您自己的个人图书馆可能不一样。

如果你非常了解JavaScript,你也应该知道jQuery的语法与JavaScript的语法没有什么不同。

您可能指的是chaining习惯用法(在jQuery中随处使用),这似乎使得事物看起来与其他类型的代码非常不同。 那是有原因的,这是因为它与DOM的工作方式非常吻合。

如果你真的了解JavaScript,那么你将在一周的时间内使用jQuery。 如果您还不了解JavaScript,那么在顶部添加图层可能会带来更多弊大于利。 但那就像其他任何东西一样!

您将以更快的速度编写更好看,更容易理解的JavaScript,而且只需一次 – 而不是每个浏览器一次。 下行? 你将要使用另一个~50KB的JavaScript。 这就是缓存的目的:)

Jquery是设计者手中的javaScript。

就像在元素上编写CSS样式一样简单。

另外Jquery是最容易理解,编写维护,添加插件。

我正在为客户制作一个画廊程序(现在在IE6和7中表现出令人费解的行为 – 惊喜,惊喜 – 但我发现当我从裸机Javascript切换到jQuery时,很多工作变得容易了。我,它在编写Javascript时提供了DOM的CSS视图 – 这使得遍历和操作更加直观。此外,跨浏览器兼容性和简洁性非常好。

如果jQuery很棒或很糟糕并不重要。 它现在是强大的JS库,用于大量页面,未来的浏览器将不得不容纳它或被视为自己的错误。


我不喜欢jQuery:我对它如何忽略其测试套件中的手机浏览器并不感到激动。 它会被移植到手机上的各种页面上,但它并没有努力确保它能很好地适应它们。

jQuery优雅地降级,它是最快的之一 (虽然不是最快的):

http://mootools.net/slickspeed/

还有很多其他的框架,无论你选择什么,你可能都不会出错,但是我自己使用jQuery,我肯定会推荐它。

🙂