说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

[探讨] 是用jQuery框架还是自造车轮呢?

HTML文档下载 WORD文档下载 PDF文档下载
日前,寒冬winter在博客园的一篇关于《从jQuery谈库与框架的设计之优劣》的文章引发了众多开发者们的激烈探讨,那么究竟是用jQuery框架还是自己造车轮呢?对此,网友们各抒己见。CSDN摘取了部分精彩评论,我们一起来探讨下。

jQuery是业内知名的JavaScript框架,它是轻量级的JS库,兼容CSS3,还可兼容各种浏览器。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且轻松为网站提供AJAX交互。jQuery一大优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。它的实现和设计可以说代表了JavaScript界最高的水平。


日前,寒冬winter在博客园的一篇关于《从jQuery谈库与框架的设计之优劣》的文章引发了众多开发者们的激烈探讨,文中他分别从解决问题、命名、接口设计、耦合四个方面来以jQuery为例总结库与框架设计的原则和优劣判断。

在谈到解决问题时,他例举了一个框架案例,他把这个库称为四则运算。

function add(a,b) {    return a+b;}function mul(a,b) {    return a*b;}function minus(a,b) {    return a-b;}function div(a,b) {    return a/b;}

这个库的API简洁优美,实现的更是优雅无比,它把四则运算统一成了函数形式,使得我们的开发更加方便。最强大的是,这个做法使得四则运算支持函数式编程,比如:

function acc(a,b,f) {    var jieguo = a; //http://weibo.com/2178807082/zk1kOcMPU    for(var i = 1; i<b; i++) {        jieguo = f(jieguo,a);    }    return jieguo<span style="line-height: 1.45em;">}</span>

这样,通过acc函数,我们可以轻易实现n次方运算,这正是函数式编程之美。

举这个例子是为了告诉大家,一个框架/库其实可以不需要解决任何问题——只要你会乱用概念、自吹和哄骗新手就够了。

下面我们来看看一个非常成功的框架——jQuery解决的问题,让我们来看看jQuery首页的"Brief Look"中给出的第一个例子。

DOM Traversal and Manipulation

$( "button.continue" ).html( "Next Step..." )
嗯,没错,jQuery希望帮助我们解决遍历DOM的问题,如果没有jQuery,我们大概要写一个traversal函数了。

function traversal(node, f) {    f(node);    if(node.children.length) {        for(var i = 0; i<node.children.length;i++)            traversal(node.children[i],f);    }}traversal(document.body,function(element){    if(element.tagName=="button" && element.className.match(/continue/)) {        element.innerHTML = "Next Step...";    }})

traversal这个函数真的是超麻烦不是么?竟然有175个字符呢!使用起来也有166个字符,用了jQuery之后,只要45个字符就可以搞定呢!好神奇!

好吧原谅我刚才把思维模式切换到了"write less, do more"模式,jQuery正是通过一个字符一个字符地节约程序员的工作量来达到这一伟大目标的。

压缩后仍达97k的jQuery竟然帮助我们少写了这么多代码,好神奇啊!这正是库/框架设计的要点,那就是"没有问题创造问题也要解决问题!"


那么究竟是用jQuery框架还是自造车轮呢?对此,网友们各抒己见。CSDN摘取了部分精彩评论,我们一起来探讨下。

@寒冬winter发表微博补充:jQuery当时硬从prototype嘴里啃下来的空间,yui一直不温不火,mootools两是prototype的改良主义,dojo一直挺烂但是有死粉,ext凭借差异化杀出血路。jq成功背后原因很复杂,多方因素。

@朴灵表示:@寒冬winter 和@玉伯也叫射雕 两个的观点都是对的。我曾经也黑过jQuery,原因是菜鸟太多,连jQuery都用不好,代码里满屏的$符号。实际角度赞同玉伯,菜鸟连$都写不好,自己写不是更糟吗?这里解释了为什么jQuery是事实上最好的DOM库。

@jQuery小组对此回复:JQ的设计更多的是出于在功能、扩展性、代码量上的平衡,很多似乎已模式化的思维并不一定要照搬到前端的开发场景中。

@IT技术精研院:优秀的框架设计,应该为整个流程做减法,而不是粗糙的叠加。code less, do more. 像JQuery这样优秀的框架设计应该被融入到下一代的HTTP规范中。

@一斯追求:JQuery确实是很强大的嘛,几十k的文件大小有那么强悍的功能实属不易,操作网页元素的时候省去了不少麻烦,尤其是实现Ajax效果的时候,有了它就是有了把利器啊,不然手写代码去建对象,自己post去请求还不把人给累死啊,还有JSon,我也夸一下,给力!

@程序猿小卡:1、jQuery神奇的多功能着实让人无力吐槽,用着挺爽的,但对于代码维护来说是个噩梦(jQuery的源码里到处是这种类型的多功能方法,印象中有个方法有7个参赛数);2、关于庞大的jQuery,已经到了压缩后还有97k的程度了?!现在已经可以做到按需模块拆分了(好吧我承认我其实没用过),所以这个问题应该没那么严重。

@超然台上仙认为:感觉jQuery弄得这么大很多都是在考虑兼容性的问题,如果能够使用最新的API肯定也不会这么复杂。另外jQuery的API确实挺好用啊,至少很容易懂。

@zegia_林并不赞成其观点:为了一个小功能而去引用庞大的jquery显然不值得,各种类库有各自的适用场景吧。

@根正苗红葫芦藤:噗,高端黑啊,无力吐槽ing。用框架主要是为了代码结构稳定、维护容易、知识互用性强。前端们太常写寿命不超过一年的玩意啦,偶等企业开发都是一用很多年2的,不好处处自造輪子的。

最后,用@郑银辉-小哥的话总结:每个框架都有其适合的场景,JQ功能丰富,文档详尽,易学易用,同时有众多插件,对于多数入门级开发者而言,的确是“必不可少”的。当然,局限性也非常明显,毕竟JQ是06年开发的,前端领域已经发生了很大的变化,而JQ的主干并没有变化,只是枝叶繁茂了点而已。

此外,网络上也不少兄弟高喊JQuery如何不好看的,然后再造个小JQuery,代码原封不动copy改个名就觉得革命面貌焕然一新的那种。

对此,各位网友你们是怎么看待的呢,欢迎与我们讨论。

更多精彩内容,欢迎@研发频道微博参与互动。

Android自定义View实例AnalogClock源码 Android UI开发专题(五) Bitmap和Canvas实例 Android UI开发专题(四) View自绘控件 Android UI开发专题(三) 各种Drawable 提高Android开发效率-Eclipse快捷键大全 Android UI开发专题(二) 之绘图基础 Android UI开发专题(一) 之界面设计 Only the original thread that created a view hierarchy can touch its views的相关 Android上的Back键事件捕获 Android蓝牙API之BluetoothSocket类(2) Android蓝牙API之BluetoothSocket类 Android蓝牙API之BluetoothAdapter类(1) Android蓝牙API之BluetoothAdapter类(2) AndroidManifest.xml文件剖析 (三) AndroidManifest.xml文件剖析 (二) AndroidManifest.xml文件剖析 (一) MOTODEV初体验,高效Android开发工具 Simple让BASIC语言编写Android程序 MOTODev试用报告- Android开发效率之源 安装MOTODEV Studio for Android版方法 Android开发工具-motoDEV studio介绍 Android过后Chrome OS又是如何开发? Android安全模型导致开发时功能受限 Android导出一个JAR库 APK汉化原理及方法 APK文件格式分析,Android反编译入门(一) ApiDemos中的Android Widget例子解析 APK签名导出向导 - Use the Export Wizard 剖析Android自带Widget - Music播放器 剖析Android自带Widget - Clock指针钟表 C#取得Excel工作簿工作表名称 为什么我的打印机打印时会出现重影?? 我怎么把他们一一显示出来在listbox里?代码写出来! 请问BOOT扇区中各个数据的意义。。 有没有一次搞定具体时间的控件 tomcat配置简单的问题 问题:十六大代表需不需要办暂住证? 求教COOKIE的用法! JBuilder 7中如何安装一个Server ### 升级内核 ### 还有一个问题(树型列表) 哪里有Visual InetDev 6.0 下载? "分"到哪里去了? 有关于赋值的问题 技术的挑战,在线等待 有关csdn的一个小的问题? 显示模式的设置 怎么样删除在DATAGRID中选定的行? 如何自动滚动edit控件多行显示时的文字 win2000系统关闭后但不会自动断电源 寻找资料,请帮忙 难啊 统计数据 求:做得漂亮的学校主页 麻烦看一下下面的代码 C#和C++builder比各有什么优缺点?哪一个更灵活更稳定?C#和C++哪个好? bug管理工具有没有web方式的? cs文件中,如何获取confirm对话框的返回值? 如何将jpg的图片加入到sql server 的 image类型的字段中阿,使用ado 配置了win2000的服务器 兄弟们。我在JAVA区竟然得不到答案。只能期望在这里找到帮助了(共200分的问题) 在ACCESS中设置数据表,如何实现数据库中多表间的关联访问,用VC的DAO实现 ORA-12560: TNS:协议适配器错误 vb+asp.net中的datagrid分页遇到问题?附代码 改了IIS账户的密码,ASP不能运行,但原先的密码不记得了!现在要修改什么文件才可以? 为什么反向工程失败? 关于ER图的做法 窗口最大化、最小化问题 本站提供能成为QQ会员的QQ代理,快来~~~ 请帮个忙好吗? 硬盘保护的问题 轻轻地温柔地任人宰割 小程序一个,很简单的,但是这样的问题经常遇到的 关于交换区的问题 d7的序列号码 刚做好的编程技术文章系统,欢迎来翻阅技术文章. ★★★★★ 那位高手有这样的好东东。。。 ★★★★★ 最近流行什么歌? PHP新手: 给一篇在Windows2000环境下PHP的安装,及apache的配置的文章,来者有分 怎么给MM送花 在哪儿下载<WINDOWS 程序设计>? HELP ME!关于TCP/IP传输位图的问题. The people there were friendly 变成一般疑问句是什么拜托了各位 need no +可数名词复数可以吗如they need no apples.书上是they need no food 从孙中山,毛泽东,邓小平和列宁身上学到哪些优秀品质 连词成句 1.the friendly people are very there 2.great连词成句1.the friendly people are very there2.great lifestyle health has a on influence have no 接可数名词时一定要用复数形式吗 单位悬挂马克思、恩格斯、列宁、孙中山、毛泽东、邓小平的伟人像.次序应该怎样排列? -I called you last night,but no one answered me-sorry,I had just finished my assignment and was taking a walk in the garden.was taking 表示过去正在做呢还是用进行时表示将来时呢 他经常帮她妈妈做家务活.用英语怎么说? he has three times ____than i havea. much moneyb, more money答案为B为什么呢? 这种倍数的讲法又有哪几种?不要复制得很繁琐= = I called you last night but no one answered the phone.-- I ________ dinI called you last night but no one answered the phone.  -- I ________ dinner with my friends in the restaurant.A.haveB.hadC.was havingD.have had 我叫和士涛帮忙给我起英文名字谢谢 How much time did you have for writing the paper?We( )three times,but I finished in less than halfthe time.A gave B would give C had given D were given怎么选D啊 this football match is very exciting的同义句 A:___at home when I called you last night?B:I___a science ficition 我叫泽涛,谁能根据我的名字起个英文名不要随便其他的,就要根据“泽涛”这个名字起.发音要差不多,也要美观点 请问是 choose to 还是choose for还是两个都有. -where were you when I called you last night?-oh,I_____(drive)home 请帮我想一个关于琳和涛的英文名 Although I failed four times,my father encouraged me to have a ___try1 second 2 third 3 fourth 4 fifth请分析原因 上海常住人口有多少? i saw him in the street just now.用just 改写.i___ ____ ____ him in the street. Although I failed four times ,my father encouraged me to have a_______(five) try.用括号中所给单词的适当形式填空 我出生在新疆在阿克苏长大 英语翻译且变成否定句式和疑问句 I saw him ___ just now.填leave还是left I failed four times,but my father encouraged me to have a ( ) try.3Q括号里填什么,有四个选项 A.second B.third C,fourth D.fifth 上海常住人口多少 急,急,急,急! 关于茉莉的好词好句好段,三年级的 很急啊! Although I failed four times,myfather encouraged me to have a (_try).1 second 2 third 3 fourth 4 fifth i have two pencils in my pencil case.(用there be句型改写)____ ____two pencils ____ my pencil case. I have three times as many as you. 我有你三倍那么多a. 主语+谓语+倍数(或分数)+ as + adj. + as 1:have 助动词不是不可以做谓语吗?2:几倍就是 前面基数词 加上times吗? This Is Not A Game 歌词 I have a pencil case.变复数.I have ___pencil cases.用some还是many 这句话中为什么加个times?在句中起着什么作用I have three times as many as you. the second day in a week同义词 "所有事情只要尽力就行 开心就行 没有十全十美 也没有最高境界"用英语怎么说啊 i have three times as many books as you这句话对吗?you 后面要不要加个do? the secod day in a week in American的同义词 40岁的女人应该怎样生活? 我的名字单名是涛 谁能帮我取一个英文名 跟我的名字有关的 the secong day of a week的同义词fdasssssssssssssssssssssss 英语翻译当相知相爱的岁月从我们身边走过,我们的爱成熟了.另一个 当未来向我们深情的呼唤,我知道,我们将伴着幸福,天长地久.不要用在线词典,要自己来 我的名字叫钟涛,有谁能给我取个英文名字啊?名字要根据钟涛这个名字来取,还要注明如何读. 颠倒词 (意思想同) 四十岁男人需要什么样的女人 英语翻译求用英文翻译这句话 意思不同的颠倒字 英语翻译1“impossible” reservations to unique access to otherwise off limit activities.译文:以其他方式无法参加的非公开活动怎么解析一下句子的成分来和译文对上 我的名字叫龙涛,谁能帮我取个英文名字?谢谢 If you love I am just here with you请问翻译中文是什么意思 《互联网用户“三权”保护白皮书》的三权是什么意思? 今天我钓了几条鱼?用英文怎么说? right now 和just now 的区别 四十岁的女人应该什么样? 我叫孙涛.帮我根据我的名字取个英文名,感谢了.取个好听一点的,谢谢了! The people were very friendly. ___ ___ the peoplThe people were very friendly. ___ ___ the peoplethere?(对very friendly提问) 英语翻译这两天我都一直关注着四川省的大地震.从电视上看到很多幸存的人被成功救出,我很感动. 这句话怎么译成英文哪?放长线,钓大鱼. were there people friendly with you 这句子正确吗 英语翻译请大家帮帮忙翻译这些话哈!1、08年5月12日中国四川地区发生一次8.0级大地震;2、这次地震死亡人数约70,000人;3、大家踊跃捐钱、捐血;4、中国与世界人民团结,共度难关;5、这次 马克思列宁主义,毛泽东思想,主义和思想有什么不同?国民党是孙中山缔造的吗?孙中山的思想又是什么?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘