利用现有JavaScript框架还是自主开发​?

标签: 利用 javascript 框架 | 发表时间:2012-03-03 23:31 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

最近,在知名问答网站 知乎上,国内社区的开发人员们讨论了如何在利用现有JavaScript框架还是自己开发工具库中做出正确的选择。

起初,有开发人员在知乎上提出了一个 问题——在掌握了JavaScript基础知识和了解了类似jQuery等框架之后,JavaScript 开发人员在哪些情况下,应该选择开发自己的框架(库),而不去使用现有的工具?

​随后,社区的开发者分别给出了自己的看法和观点。

李国新引用了常用的说法“不要重复发明轮子”,并指出其背后的含义:

在已经有某种轮子满足你需求的情况下,你不需要再写一个。所以,使不使用某框架(库)​,在于它是不是满足了你所有的需求。满足了,它就成为了你的轮子,否则,不管它多强大,都不足以成为你的目标轮子。

他以自己在实际开发中遇到的例子现身说法:

我们的产品需要一个手机登陆页,这个页面会有一些交互逻辑,如表单验证,还有一些简单的动画......在非手机产品中,我们大量使用了jQuery,但是在这个小任务中,我不能用jQuery,只能自己再写个简单的小工具库,自行实现如getElementsByClassName、tween动画等功能。为什么呢?我想大家都考虑到流量问题。在这个场景中,jQuery库的体积已经远远超过了要求。所以,不管它的其他功能有多好用,都满足不了对文件体积的要求,那么它在此时就不是目标轮子,你只能自行实现(或者寻找其他更理想的轮子)。

新颖的JavaScript框架(工具库)​总是层出不穷的,从最早的DOM兼容性工具函数,到早几年的Prototype、YUI、jQuery等,到现风头正劲的CommonJS(我指的是实现了CommonJS规范相关的框架)等,从来就没有停歇过。如果哪门语言再也没有新东西出来,那应该是它已经被开发者抛弃了。所以JavaScript框架(库)仍然会不断的冒出来。

写不写重复的轮子?我的答案是,如果是为了提高技能,非常建议你去写。写重复的轮子是提高技能的不二法门。如果不想动手,那去了解已存在的轮子是如何实现的也会受益匪浅。 

陈计节指出了自建框架时需要考虑的一些问题:

对于框架的选用,合适就是好用的。DOM和基础Ajax方面,jQuery、YUI和Moon Tools都不失为很好的选择。但是我们遇到的问题总是错综复杂形式多样的,一个项目往往不能凭借单独的某个框架或者类库去解决。

为何选用已有框架?因为其在对应领域形成了独特而高效的生产力,收到广泛的肯定与认可,使用它们可以大大地缩短开发周期,有许多人在共同研究和使用,有完善的社区支持体系。

何时使用自己的框架,或者说为何要自行构建框架或者类库?当不满足使用已有类库的条件,或者有新的问题出现,已有的框架或者第三方类库无法满足需求时考虑拓展、改进其设计或者自建新的体系。自建时要面对一些基本问题:要解决哪些还未解决的问题?为什么现有类库不能满足需求?能否真正的提高生产力?能否很好地解决浏览器兼容性问题?如何在有限的成本范围内保证代码的优质性?能否提供升级与维护?

对于正处于学习阶段的开发者来说,尝试学习类库的组织方式、编写思路并试图编写自己的类库与框架能够快速而有效的训练开发者对设计模式的理解,显著提高综合编码能力,更全面的认识所面对的问题,更容易促使新的思路出现。

米粽认为jQuery和原生代码有不同的应用场景:

我原先也很喜欢用jQuery,随着自身JavaScript水平的提高,在jQuery和原生JavaScript代码之间我越来越偏向后者,可以按自己的习惯更灵活的编码,不必受jQuery代码风格的限制。另一方面,我的工作逐渐向移动设备转移,在只考虑Webkit系的情况下,选择器、兼容性等都不再是问题,jQuery提供的便利已不明显,性能上又没有针对移动设备的优化,自然不在候选。但事情不是绝对的,去年我和一个JavaScript能力欠佳的同事合作,为了保证开发顺利进行,也使用了jQuery(这个同事现在已经基本可以丢掉jQuery了......)。

其实不管是JavaScript/jQuery,所有开发工具的选择上,我觉得至少可以参考两个因素:能满足开发质量的要求,团队成员学习的成本不影响开发进度。

天祁指出性能问题可能是现有框架的通病:

......之前也写过,后来发现更多是在锻炼自己的代码组织能力和技术能力。当然,有些高手写出来的框架还是很给力的。写个框架给别人用是一件很不容易的事,少有人做得好。

最近准备开发一个Web App,嵌在PhoneGap里面,性能问题很头疼,试了几个框架,反应都很慢,满足不了需求。所以就想自己写,不一定是一个通用框架,至少要满足性能和维护问题。框架为了实现通用和扩展性,通常对性能都做了一些牺牲。

程劭非则针对jQuery的缺陷提出了自己的看法:

确信你不符合以下三点的话,用jQuery不会被鄙视:

  1. 用jQuery的人不是因为喜欢jQuery,而是因为自己根本写不出那样的东西。
  2. ​从来没有用过jQuery之外的框架,说jQuery好是因为自己只懂jQuery。
  3. ​为了jQuery插件而用jQuery,觉得插件省了不少事。

再谈谈我自己为什么不用jQuery:

  1. 我不认同jQuery的设计理念:Write less, Do more。我认为一个框架应该解决的问题有:封装性、复用性、可维护性,少写代码不在此列。
  2. jQuery插件定制性非常差,基本很难定制到符合设计。
  3. jQuery的大部分插件做了错误的抽象,把对象变成了函数。
  4. jQuery的$不是一个好命名,名称没有体现函数功能,而且把选择器、对象包装、Domload事件几个完全不相干的功能变成了一个函数,这是对函数重载的滥用。

​感兴趣的读者可以在知乎的 问题中查看更加详细的讨论内容,也欢迎开发人员在此发表自己的看法。

崔康 热情的技术探索者,资深软件工程师,InfoQ编辑,从事企业级Web应用的相关工作,关注性能优化、Web技术、浏览器等领域。

相关 [利用 javascript 框架] 推荐:

利用现有JavaScript框架还是自主开发​?

- - InfoQ cn
最近,在知名问答网站 知乎上,国内社区的开发人员们讨论了如何在利用现有JavaScript框架还是自己开发工具库中做出正确的选择. 起初,有开发人员在知乎上提出了一个 问题——在掌握了JavaScript基础知识和了解了类似jQuery等框架之后,JavaScript 开发人员在哪些情况下,应该选择开发自己的框架(库),而不去使用现有的工具.

15 个微型 JavaScript 框架

- - HTML5研究小组
倘若问Web 开发者最喜欢的 JS 库是什么,多数回答都是 jQuery,不管其所做的网站是大是小. 开发者倾向使用 jQuery 的原因是它可以降低代码的复杂度,而且 jQuery 经过良好的测试,拥有大量用户以及很好的社区生态,当然,还有大量的插件. 不过 jQuery 的体积比较大,本文即将介绍的是 15 个微型的 JavaScript 小框架,这些框架都支持 Web 和智能手机平台,短小精干.

5个实用的Javascript框架

- cchitsiang - 伯乐在线 -博客
  Web开发很简单,Web应用的UI开发却很复杂,如果能够利用一些成熟的框架,可以大大的减少开发的复杂度. 国外开发人员Kiko在本文向你介绍5个很不错的JS框架.   ExtJS 主要用来开发RIA富客户端的AJAX应用,主要用于创建前端用户界面,与后台技术无关的前端ajax框架. 因此,可以把ExtJS用在.Net、 Java、Php等各种开发语言开发的应用中.

16个最流行的 JavaScript 框架

- Phineux - cnBeta.COM
这篇文章列举了当下最流行的16个 JavaScript 框架,既包含 jQuery 和 Mootools 等常规框架,也有Zepo这种支持智能手机触摸功能的移动JavaScript框架,如果你有更好的框架推荐,欢迎与我们分享.

20个值得一试的JavaScript框架

- 钟伟 - 伯乐在线 -博客
  Siddharth 在 tutsplus 上写了一篇文章,介绍了20个值得一试的 JavaScript 框架.   闲话少说,看看便知,列表如下:.   Sproutcore 提供大量的高性能应用包括 MobileMe 等. Sproutcore 拥有个 UI 框架,标准 MVC 架构及完整友好的文档.

一个必用的javascript框架:underscore.js

- - ITeye博客
  上篇文章(http://cavenfeng.iteye.com/admin/blogs/1551516)粗略介绍了移动应用框架的搭建,其中,有一个比较重要的库:underscore.js.   Underscore是一个非常实用的JavaScript库,提供许多编程时需要的功能的支持,他在不扩展任何JavaScript的原生对象的情况下提供很多实用的功能.

12款优秀JavaScript MVC框架评估

- - Web App Trend
导读:在最近的几个月中,作者一直在寻求哪种MVC框架最为完美:将目前能获取到的所有框架都粗略地试了试,然后在文章中列出了每一种框架的情况概要,在文末分享了作者经过对比之后最终的推荐产品. 首先要特别说明一下,以下四个feature作者认为是十分重要的:. UI Bindings:[UI绑定]作者想说的不仅仅是模板,而是想谈一种在底层模型出现变化时,视图层能够自动相应地更新的陈述性方法.

10个css3/javascript动画插件/框架

- - ria之家--RIA三部曲:jquery、ext、flex
jquery的一个用的人比较多的动画插件,非常的易用,效果也非常全面. 应该是目前针对transform最为全面的动画库,特点支持3D动画特性:. 非常牛逼的动画效果,文档和demo都很详细,虽然用于实战的场景不多(基于canvas的动画),不过依旧推荐认真看下. 相当不错的小动画库,能够产生大部分css3动画效果,关键是API非常易于理解,比如下面的代码:.

JavaScript 客户端 MVC 框架调查

- - 博客 - 伯乐在线
来源: IBM DeveloperWorks. 15 年前,许多人都使用 Perl 和 ColdFusion 之类的工具构建网站. 我们经常编写可以在页面顶部查询数据库的脚本,对数据应用必要的转换,以及在同一个脚本底部显示数据. 这类架构适合于向网站添加简单的 “Contact us” 表单. 然而,随着应用程序变得更加复杂,这种方法无法进行相应的扩展来处理更大的复杂问题.

5 个界面效果很炫的 JavaScript UI 框架

- paul - 博客园新闻频道
  Web 开发很简单,Web 应用的 UI 开发却很复杂,如果能够利用一些成熟的 UI 框架可以大大的减少开发的复杂度. 本文向你介绍 5 款界面效果很不错的 JS 框架.   ExtJS 主要用来开发RIA富客户端的AJAX应用,主要用于创建前端用户界面,与后台技术无关的前端ajax框架. 因此,可以把ExtJS用在.Net、 Java、Php等各种开发语言开发的应用中.