当选择jQuery作为我的主要JavaScript库时,有哪些优缺点?

13

我已经开始开发一款新的Web应用程序,并决定使用JQuery作为我的主要JavaScript库... 但是我仍然希望从SO用户那里得到一些使用JQuery的优缺点和技巧...

7个回答

11

优点

  • 消除了许多跨浏览器的Javascript问题
  • 可以用很少的代码执行复杂的Javascript操作
  • 可以轻松地向应用程序添加Ajax功能
  • 具有内置的UI和效果库

缺点

  • 增加了页面额外的Javascript开销
  • 对于一些开发人员来说,学习曲线可能不短

11
与所有其他JS库相比,我认为jQuery的学习曲线是最短的。这是jQuery受欢迎的原因之一。 - Ivo Sabev
@Ivo:我同意。但同时,可能太简短了。jQuery确实帮了很多忙,但也可能阻碍开发者学习真正的JavaScript。 - fredrik
1
可以用很少的代码执行复杂的Javascript操作 - 这并不完全正确。虽然你只需要写很少的代码,但执行某个操作所需的总代码量通常比较大。 - fredrik
Fredrik,如果你只使用 jQuery 的部分功能,我认为这是正确的。否则,你将不得不在自己的代码中复制该功能。 - Craig

7

优点多,缺点少。

唯一的问题是jQuery添加的执行时间开销,但与编写跨浏览器兼容的JavaScript代码相比,这几乎可以忽略不计。

而且与其他JavaScript库相比,jQuery是最快和最小的之一。它们的社区非常庞大,您可以轻松找到支持和良好的文档。


1
生产版本为24KB。 - yassin
正如Yassin所说,压缩和精简后的jQuery大小为24kb。我也提到了jQuery带来了一些额外的下载和执行的不便,但与其带来的好处相比微不足道。 - Ivo Sabev
你可以从以下链接引用 - http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js,它们支持gzip。在今天的计算机中,解释器中的70KB只是一个玩笑。你的担忧有点过度了。 - Ivo Sabev
如果移动电话确实支持jQuery,那么这可能不是一个笑话。但这是一个相当无意义的争论。文件大小并不是使用类似jQuery这样的库的唯一缺点:例如,会有必然的性能损失和受支持浏览器数量有限。 - Tim Down
1
好的,我同意这是毫无意义的。 - Tim Down
显示剩余5条评论

5
  • 优点:
    • 庞大的社区
    • 选择和迭代DOM节点集非常有用
    • 可以消除浏览器之间的某些不一致性
    • 使经验不足的JavaScript开发人员易于执行相对复杂的脚本任务
  • 缺点:
    • 定期更新会改变现有行为
    • 一些混淆的基本API方法(例如attr()方法:它到底做了什么?它确实模糊了属性和属性之间的界限)
    • 鼓励"链式调用",导致难以调试的代码:在较长的jQuery方法调用链中,没有地方放置日志记录语句,因此需要全面调试器
    • 支持的浏览器清单很短
    • 关于通用目的库的一个普遍观点:它们鼓励开发人员不尝试理解库试图解决的基础问题,导致倾向于认为库是神奇的,并将其用于绝对所有事情上
    • 每个使用它的页面都会添加70K的JavaScript,而通常只需要几个字节的非jQuery代码
    • 性能通常比等效的(经过深思熟虑的)非jQuery代码慢得多
    • 插件的质量非常不一致

2
我可以看到这里有很大的偏见。似乎你错过了一些优点...顺便说一下,它是19k与min+gzip。链接并不本质上是一个问题--你的经验可能会说另外一种情况,但你不能只是做出一个平面的陈述,并期望它站得住脚。 - James
3
采用一种方法(“attr”),然后说整个API“混乱”,这种做法是疯狂的…我认为你的许多观点需要有实质性的证明。 - James
J-P:我相信你已经意识到了,我在计算库的大小时没有考虑gzip压缩,因为并不总是会进行gzip压缩。此外,在考虑JavaScript解释器需要执行的工作时,非gzip压缩大小更为相关。关于你提出的其他观点,我很快就会详细说明我的答案。你认为我漏掉了哪些优点?我很乐意接受我可能没有想到的一些想法。 - Tim Down

4

你做出了一个很好的选择,不用担心。jQuery是一个非常精心设计的库 - 它强大、简洁、文档齐全,并且非常受欢迎。好好学习它,它将成为你工具箱中强有力的工具。

话虽如此,我认为要真正了解它与其他框架的优缺点,你应该先好好学习它。只有深入理解一种工具,才能真正地与其他工具进行比较。


3

我能想到的唯一缺点是偶尔会出现内存泄漏。它是建立在JavaScript之上的伟大框架,不具限制性。

话虽如此,jQuery UI 不符合我的口味,如果你的应用程序需要高度交互式界面,请尝试Ext JS


2

优缺点实际上与您的新Web应用程序要做什么有关。如果它将是JavaScript / Ajax丰富并需要跨浏览器支持,则jQuery是不容置疑的选择。但是,如果您只会非常少量地使用JavaScript,则包含一个较大的框架可能会过度,直接编写JavaScript代码会更有效率(从性能和页面大小方面考虑)。


还有其他的JS库。如果要非常丰富,那么专注于提供小部件(例如ExtJS)的库可能会更好。 - Quentin
为什么这个回答被踩了?他的回答哪里不正确? - James
“rich”不仅仅是“许多小部件”的同义词(尽管jQuery有很多这样的小部件,包括jQuery UI)。jQuery是一个灵活的编程框架,而不仅仅是一组漂亮的控件和主题(尽管后者也很有用)。 - Dan Diplo

1

优点:轻量级,易于使用,文档齐全,几乎消除了所有跨浏览器问题并规范化了事件模型。

缺点:jQuery UI 没有太多可提供的内容,插件有好有坏。

如果您正在开发非常 JavaScript 重的 Rich Internet 应用程序,请选择 YUI 或 ExtJS。jQuery 是一个出色的 DOM 操作库,并且是高度定制 UI 工作的最佳选择。但是,如果您需要大量的标准 UI 和强大的数据管理系统支持,您需要一个更大的框架来将它们全部绑定在一起。


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