BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

选择jQuery的理由

| 作者 崔康 关注 0 他的粉丝 发布于 2012年8月6日. 估计阅读时间: 7 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

随着Web前端技术的发展,Javascript框架层出不穷,jQuery就是其中之一。最近,国内外社区针对jQuery的优缺点做了深入的分析,其中不少内容值得Web开发人员借鉴。

Richard Hein在“6 Things You Need to Know About jQuery”一文中列举了推荐jQuery的若干理由,包括:

  1. jQuery简化工作——开发人员会发现学习jQuery比较容易,因为该框架的代码简洁精练,语法简单、编码标准开发等特点帮助开发人员缩短了部署应用的时间。此外,开发人员无需对Web设计非常在行,利用jQuery,不必花费太多的时间用来编写和测试CSS代码,而且jQuery还有大量的UI组件。
  2. jQuery的显示不受Javascript被禁用的影响——如果Adobe Flash不能正常加载,那么有的页面就不能正常显示。这会对用户产生负面的影响,并且导致开发人员不得不为此做额外的编码处理,从而延长了开发时间。而这种情况不会在jQuery身上出现。它采用的是HTML DOM操作,即使浏览器的Javascript被禁用,网页还是可以正常显示。
  3. jQuery与Visual Studio IDE集成——NuGet是Visual Studio的一个扩展,在开发基于.NET Framework的应用时,NuGet能够简化添加、删除等工作。VS 2010通过“管理NuGet包”对话框来支持对jQuery的集成。这种特性会触发VS的智能感知等功能,提示开发人员jQuery的方法和语法。总的来说,大多数.NET开发人员对NuGet都比较熟悉。这就是jQuery在.NET社区持续受到关注的原因之一。利用jQuery针对Windows的Mobile theme,你会在Windows Phone平台上享受到所有的开发优势。微软也在鼓励jQuery的使用,并且认真对待HTML5,引入了许多jQuery元素。
  4. jQuery制作的动画效果不比Flash差——Flash开发人员需要很长的学习过程,对于通常的开发人员开说,需要花费数年的时间才能创建出优秀的作品。而另一方面,jQuery是免费的,而且只要求开发人员了解Javascript和HTML。假设你可以负担得起Flash开发软件,但是开发人员仍然需要处理那些不支持Flash的情况,这是构建Flash网站的最大的缺点之一,也是利用HTML5构建的最大优势之一。同时,jQuery使用了CSS、HTML、Javs和Ajax,这意味着你可以无需采用类似Flash那种特殊的优化方式。
  5. jQuery加载更快——Google和其他搜素引擎都把页面加在时间作为影响SEO的因素之一。因此,开发人员都会努力把Web代码尽可能写的简洁和准确。最好的方式是减少代码量。jQuery文件与Web页面分开存储,这可以让开发人员集中地优化代码。此外,jQuery还支持开发人员自主选择如何加载Div标签,如果你想要改进网站的速度,那么可能会考虑在必要的时候只加载所需的Div标签。
  6. jQuery有助于SEO——网站的代码结构对各种搜索引擎的排名影响较大,jQuery提供了大量优化的插件帮助开发人员完成这项工作。

在国内社区,开发人员也对jQuery做了讨论。张经纬比较了jQuery和YUI的优缺点

jQuery专注于DOM的操作,他通过继承的方式给传入的对象增加了新的方法,从而使我们可以通过链式调用来操作对象,这种方法上手简单,我看到很多设计师都可以玩上一玩。其实,就像jQuery说的,write less do more!
YUI是一个大型开发工具,他提供了一套javascript以及css的类库来为交互开发提供支持,我们可以看到YUI除了主打的js框架外,还有配套的压缩工具(YUI Compressor),文档生成工具(YUI Doc),单元测试工具(YUI Test)甚至开放了PHPLOADER(YUI PHP Loader ),再较大团队开发中,这些东西是非常重要的。
从编程语法上来说,诚如前面所说,jQuery专注于DOM操作,因此必不可免的弱化了OO,相比之下YUI则更加规范。再如,jQuery中面向DOM的设计,决定了他可以通过$.extend()或者$(elem).extend()向对象或者节点增加新的方法,而YUI在这方面就异常的笨拙。当然,这些并不能说明谁比谁好,YUI的颗粒化决定了他的维护成本低,可以称为刀,而jQuery锋利的刀刃决定了它使用方便,游刃有余,可以称为剑。

程劭非则对jQuery的评价不高,理由包括:

  1. jQuery主要解决了兼容问题和DOM操作问题,以CSS选择器的方式批量操作元素是主要特色,对于特定项目,我认为实现这个的难度实在不大。而其主旨"write less, do more." 少写些的这个观点我半点不能认同,写程序的时间主要花在思考和调试,而非打字。
  2. jQuery污染了两个名字JQuery和$,这个在类库中可以算极少污染了,但是实际上$与其它类库冲突很多,而noconflict这个方案可算不伦不类。
  3. jQuery的API设计可以说非常巧妙和优秀,但是其实跟JS的原生对象差的有些远,不过却跟CSS的模式比较接近,这个对于不少人很有亲和力。
  4. jQuery的实现质量也算比较高了,虽然选择器还有些优化空间,不过基本可以认为没有太大问题。

杨昆则给出了知乎选择Closure Library来作为JavaScript库,而不选择更流行的jQuery的理由

选择closure-library是因为这是一个整体解决方案,自带的库已经很丰富,不需要再去找其他插件。而且google用其开发了gmail,google doc,可以放心它的质量。
如果选择jquery的话,单纯jquery库是不够的,还得很多第三方插件,这些插件质量良莠不齐,对不同版本jquery支持还不一致。

InfoQ的读者对jQuery的优缺点有什么看法?欢迎发表自己的看法!

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

jquery 不太适合大型项目 开发! by you zhao

自己的核心模块 太少, 大多依赖第三方库, 编写的代码质量不同, 风格不同增加了维护成本。

用jQuey主要做两件事, 完全不用写冗长的API, 不用考虑浏览器的兼容 by 高 雷

用jQuey主要做两件事
一、查找 Dom 元素,
二、对 Dom 元素进行操作。

路过 by zhang zhijia,.

@jQuery的实现质量也算比较高了,虽然选择器还有些优化空间,不过基本可以认为没有太大问题。
也算?还有优化空间?基本?你能具体点吗?

第二条有歧义 by Zhang Shenjia

第二条翻译有歧义,从字面上理解是“jQuery在javascript被禁用的情况下还能正常工作”。原文意思是:同样是实现动画,jQuery操作的是页面元素,即使jQuery因javascript被禁用停止工作,页面元素也会正常显示,用户不会什么都看不到。

难道我的眼睛出了问题了吗?知乎没用Jquery? by 刘 洋

那么知乎首页上的这个min是什么?
<script type="text/javascript" src="http://static.zhihu.com/static/js/lib/jquery-latest.min.js" charset="utf-8"></script>
打开后看到该js文件的第一句就是:/*! jQuery v1.7.2 jquery.com | jquery.org/license */
不知道“杨昆则给出了知乎选择Closure Library来作为JavaScript库,而不选择更流行的jQuery的理由:” 这句话的根据是哪来的。

不装逼会死? by wen bob

在infoq上还能找到比这篇更肤浅的文章吗?请大家踊跃提供线索。
如果你想说jq低效,请指出低效的地点和原因,或者给出测试数据。至于改进的方法,咱就不要了,权当是你家祖传秘方。
如果你想说jq不适合大项目,也请指出jq这种基础库怎么挡了你大项目的路了,用xxx由如何使你效率倍增了。要证明jq只能混迹在小项目里,首先就得证明众多用jq的知名网站选错了,换一个更好。这很有意义啊,很值得具体弄几个反面例子来批驳一下。
。。。其实我本人对jq也不偏爱,自家项目里还用过dojo。问题是这一篇文章太奇葩了啊!

Re: 第二条有歧义 by liu wei

是的

感觉挺不错的啊 by 斌 叶

我的项目里也用了jQuery,但是我个人觉得,好不好用完全在于你想用jQuery干什么。例如,DOM操作,j就很简洁,至少代码上简洁多了。如果涉及到数据的操作,我真的会好好想想了。目前我做的大部分javaEE平台上,ajax部分基本上交给dwr了,但是dwr对DOM操作的lib特别烂,所以,一般都用DWR做异步通讯,用JQ做表现。还有一个问题,如果这个功能需要返回的是json格式的数据,我一般会选择DWR,如果返回的是jsp,我选择$.get()。如果整个项目都采用异步方式提交数据,那么我会认真的考虑是用JQ还是YUI。所以,不能以偏概全,具体问题具体分析。

Re: jquery 不太适合大型项目 开发! by Gavin Wang

1.SAP 做的应该都是大型项目吧,它为何也选用JQuery作为HTML5 toolkit的foundation呢:
scn.sap.com/people/shivank.arya/blog/2012/04/11...

难道你做的项目规模比它还要大?:)

2.全球排名考前的网站(Top 100,10000 ....)使用的JavaScript Library统计,用数据说话,睁眼看看:
trends.builtwith.com/javascript

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

9 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT