<p> 随着 Web 前端技术的发展,Javascript 框架层出不穷,jQuery 就是其中之一。最近,国内外社区针对 jQuery 的优缺点做了深入的分析,其中不少内容值得 Web 开发人员借鉴。</p> <p> Richard Hein 在“<a href="/misc/goto?guid=4958521760031801788" target="_blank">6 Things You Need to Know About jQuery</a>”一文中列举了推荐 jQuery 的托干理由,包括:</p> <ol> <li>jQuery 简化工作——开发人员会发现学习 jQuery 比较容易,因为该框架的代码简洁精练,语法简单、编码标准开发等特点帮助开发人员缩短了部署应用的时间。此外,开发人员无需对 Web 设计非常在行,利用 jQuery,不必花费太多的时间用来编写和测试 CSS 代码,而且 jQuery 还有大量的 UI 组件。</li> <li>jQuery 的显示不受 Javascript 被禁用的影响——如果 Adobe Flash 不能正常加载,那么有的页面就不能正常显示。这会对用户产生负面的影响,并且导致开发人员不得不为此做额外的编码处理,从而延长了开发时间。而这种情况不会在 jQuery 身上出现。它采用的是 HTML DOM 操作,即使浏览器的 Javascript 被禁用,网页还是可以正常显示。</li> <li>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 元素。</li> <li>jQuery 制作的动画效果不比 Flash 差——Flash 开发人员需要很长的学习过程,对于通常的开发人员开说,需要花费数年的时间才能创建出优秀的作品。而另一方面,jQuery 是免费的,而且只要求开发人员了解 Javascript 和 HTML。假设你可以负担得起 Flash 开发软件,但是开发人员仍然需要处理那些不支持 Flash 的情况,这是构建 Flash 网站的最大的缺点之一,也是利用 HTML5 构建的最大优势之一。同时,jQuery 使用了 CSS、HTML、Javs 和 Ajax,这意味着你可以无需采用类似 Flash 那种特殊的优化方式。</li> <li>jQuery 加载更快——Google 和其他搜素引擎都把页面加在时间作为影响 SEO 的因素之一。因此,开发人员都会努力把 Web 代码尽可能写的简洁和准确。最好的方式是减少代码量。jQuery 文件与 Web 页面分开存储,这可以让开发人员集中地优化代码。此外,jQuery 还支持开发人员自主选择如何加载 Div 标签,如果你想要改进网站的速度,那么可能会考虑在必要的时候只加载所需的 Div 标签。</li> <li>jQuery 有助于 SEO——网站的代码结构对各种搜索引擎的排名影响较大,jQuery 提供了大量优化的插件帮助开发人员完成这项工作。</li> </ol> <p> 在国内社区,开发人员也对 jQuery 做了讨论。<a href="/misc/goto?guid=4958521760144501563">张经纬</a>比较了 jQuery 和 YUI 的<a href="/misc/goto?guid=4958521760252889353" target="_blank">优缺点</a>:</p> <blockquote> <p>jQuery 专注于 DOM 的操作,他通过继承的方式给传入的对象增加了新的方法,从而使我们可以通过链式调用来操作对象,这种方法上手简单,我看到很多设计师都可以玩上一玩。其实,就像 jQuery 说的,write less do more!</p> <p>YUI 是一个大型开发工具,他提供了一套 javascript 以及 css 的类库来为交互开发提供支持,我们可以看到 YUI 除了主打的 js 框架外,还有配套的压缩工具(YUI Compressor),文档生成工具(YUI Doc),单元测试工具(YUI Test)甚至开放了 PHPLOADER(YUI PHP Loader ),再较大团队开发中,这些东西是非常重要的。</p> <p>从编程语法上来说,诚如前面所说,jQuery 专注于 DOM 操作,因此必不可免的弱化了 OO,相比之下 YUI 则更加规范。再如,jQuery 中面向 DOM 的设计,决定了他可以通过$.extend ()或者$(elem) .extend ()向对象或者节点增加新的方法,而 YUI 在这方面就异常的笨拙。当然,这些并不能说明谁比谁好,YUI 的颗粒化决定了他的维护成本低,可以称为刀,而 jQuery 锋利的刀刃决定了它使用方便,游刃有余,可以称为剑。</p> </blockquote> <p> <a href="/misc/goto?guid=4958521760357163331">程劭非</a>则对 jQuery 的评价不高,<a href="/misc/goto?guid=4958521760466619578" target="_blank">理由</a>包括:</p> <ol> <li>jQuery 主要解决了兼容问题和 DOM 操作问题,以 CSS 选择器的方式批量操作元素是主要特色,对于特定项目,我认为实现这个的难度实在不大。而其主旨"write less, do more." 少写些的这个观点我半点不能认同,写程序的时间主要花在思考和调试,而非打字。</li> <li>jQuery 污染了两个名字 JQuery 和$,这个在类库中可以算极少污染了,但是实际上$与其它类库冲突很多,而 noconflict 这个方案可算不伦不类。</li> <li>jQuery 的 API 设计可以说非常巧妙和优秀,但是其实跟 JS 的原生对象差的有些远,不过却跟 CSS 的模式比较接近,这个对于不少人很有亲和力。</li> <li>jQuery 的实现质量也算比较高了,虽然选择器还有些优化空间,不过基本可以认为没有太大问题。</li> </ol> <p> <a href="/misc/goto?guid=4958521760578352062">杨昆</a>则给出了知乎选择 Closure Library 来作为 JavaScript 库,而不选择更流行的 jQuery 的<a href="/misc/goto?guid=4958521760687182796" target="_blank">理由</a>:</p> <blockquote> <p>选择 closure-library 是因为这是一个整体解决方案,自带的库已经很丰富,不需要再去找其他插件。而且 google 用其开发了 gmail,google doc,可以放心它的质量。</p> <p>如果选择 jquery 的话,单纯 jquery 库是不够的,还得很多第三方插件,这些插件质量良莠不齐,对不同版本 jquery 支持还不一致。</p> </blockquote> <p> 欢迎发表自己的看法!</p> <div id="come_from"> 来自: <a id="link_source2" href="/misc/goto?guid=4958521760796429118" target="_blank">InfoQ</a> </div>