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

[探讨] 是用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改个名就觉得革命面貌焕然一新的那种。

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

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

PHP中利用jQuery实现SWF图像上传和裁剪 VB.NET或C#将DataSet快速导出到Excel中 HashSet的equals和hashCode重写问题 PendingIntent实现原理和代码 IntentService实现原理及内部代码 AsyncTask实现原理和内部代码 Neither user nor current process错误 ListView的右边滚动滑块启用方法 Live Wallpaper动态壁纸开发 控制软键盘显示和隐藏 设置Activity大小不再全屏原理 Android面试题,看看你基础如何? Android Canvas绘图抗锯齿解决方法 Android xliff和字符串资源 android.hardware.USB类介绍 Android开发经验谈之应用间数据共享 android_asset这个URL详细使用方法 Android 2.3系统自带高清UI图标下载 设置ScrollView滚动条的颜色 WakeLock使用方法示例代码 Concurrent并发库常见问题总结 Android数据库SQLite性能优化技巧 Android开发之Java设计模式基础篇 Android开发之Java设计模式入门篇 Android开发之Java设计模式 Android开发之Java并发包集合类性能分析 Android开发之Java集合类性能分析 Android开发之Java虚拟机原理和内存分配 Android开发之Java基础系列教程目录 Android Theme主题样式开发注意点 Android 3.0开发用的平板推荐 各位大虾,kde下的KDevelop怎么用,尤其是C++编程? 急!急!急!急!急!急!急!急! 我该如何调试一个进程外的exe组件呢?我该如何调试一个进程外的exe组件呢? 打包的问题? 如何在一个MFC程序中取得theApp的指针?? vb与ACCESS200以上版本的兼容性问题 怎么做到的录像? 能不能在基于对话框的程序里实现串行化? MS专家请进:行锁定问题 怎样得到一个文件的扩展名 我在VB中引用了"Microsoft DAO2.5/3.5 compatibility Library",请问在做安装程序时要添加什么DLL和库文件? 高手请进!35分赠送!!!!!!!!!!!!!(运行正确即送分)! sos sos sos 求一源程序或者代码,或者详细制作方法 求教:用java怎样写,内详。 那位兄弟介绍一下国外的找工作情况 在我的主程序中调用ActiveX DLL的问题。 急救:ucdos98,如有请发给我,guicheng.wang@hisensecom.com 高分感激!!! 一个简单的问题? 买了个内置硬猫,装上驱动后机器慢得要命,好象一直在等待什么,而此时system进程占用cpu为99%。 关于专用打印机指令问题!!! 候捷和候俊杰是什么关系?? Crystal Reports的问题 什么是命名空间? 请问怎样订阅google上的新闻组?? 浏览器中的时间选择 谁知道程序员大本营2001光盘那个EXE文件的制作方法吗? 为什么没有actionscript的论坛?那个可是前沿啊/ 错误类型:Microsoft JET Database Engine (0x80040E09)是什么错误啊?请大虾们帮忙! 紧急:请问怎样在windows me中添加、设置并使用传真机 有谁有字节序转换的c代码?现在我要将网络字节序和主机字节序相互转换,但又不能调用api,不知那位大侠可以帮忙?先谢了! 用.NET制作安装盘的一些问题 有谁有字节序转换的c代码?现在我要将网络字节序和主机字节序相互转换,但又不能调用api,不知那位大侠可以帮忙?先谢了! 不能访问asp文件了?? 能做到让页面不刷新吗? 请教一个算法,有关数学的 FastReoprt 要!要!要!要!要!要!要!要! 《C++ Primer》 中文版怎么还不出啊! 重庆高程报名时间 怎样用NMFTP象网络蚂蚁那样自动获得下载文件的地址 特酷的串口通讯调试工具,有其它工具... 有没有win32版的mysql JDBC驱动? 郁闷!菜鸟的“关于数据库订购与发布的问题” :( 如何使子类的属性不可见 我想画曲线,类似log曲线的样子,不知道vc里面怎样才能方便的实现,有源码最好 特酷的串口通讯调试工具,有其它工具... 请问如何用电话线将各分公司连网,并实现数据上传功能,以保证总公司的数据汇总,CSDN的高手到那里去了,我已经第二次提了,没有一个人回 请指教! 特酷的串口通讯调试工具,有其它工具... 菜得不得了的 问题,从SQL SERVER中导入一个表(如表名QK)到ORACLE后,不知表名变成什么? 环境描写对小说,记叙文的作用 身临其境的临是到达的意思,你能用这个字再组一个词吗? 计算下列物质相对分子质量Ca(H2PO2)NH4HCO3KMnO4KClO3Fe3O4Na2CO3KNO3SO2SO3COCO2P2O5 记叙文景色描写的作用请最少写出4点 身临其境中的临是什么意思,(*^__^*) 嘻嘻…… 计算下列各物质的相对分子质量H2 O3 CO H2O2 Ca(OH)2 Mg(OH) NH4NO3 C2H5OH CH3COOH, 记叙文中景物描写的作用 身临其境的意思和临的意思 描写家乡景色的句子可以是描写桔园、池塘、或竹林的最好是分四季描写 “一石激起千层浪”是指石块击打水面时,向四周___,同样的道理,发声体震动也会向周围空气___ 《故乡》中鲁迅对闰土进行描写的句子中,体现了闰土的什么品性? 描写家乡风景直接描写的1句话 气球爆破发出声音是什么振动,是空气还是它的皮?说明理由 对比描写人物外貌的句子 就像鲁迅的故乡里 写闰土的变化一样 庄重严谨,丝毫也不马虎是哪个词语的解释 青藏高原因为海拔高气温低形成了特殊的____气候区? 找出鲁迅《故乡》中,具体描写“我”刚见到闰土时矛盾心情的句子 意思是形容举动十分谨慎,丝毫不敢疏忽的词语有哪些 苟 可以组什么2个字的词?知道的回答一下. 在鲁迅先生的小说《故乡》中描写中年闰土的所有句子做成集美要小说原句 根据所给解释写出相应的词语严肃认真地对待某一件事1:严肃认真地对待某一件事2:满足于已经得到的生活愿望,使生命有依托3:姑且用来安慰自己 描写家乡风景的句子 《故乡》中闰土对鲁迅的态度是怎样的?闰土对生活的态度是什么? 在化学反应中,各物质之间的质量之比如何计算如题,要写出过程,要简洁的 一丝不苟组词 我家的母鸡下了好久的蛋就是不孵小鸡是怎么回事啊 子夜吴歌的意思是什么?(注意是子夜吴歌的整个诗句的意思) 描写家乡景物的好句好段 为啥母鸡会生出一些孵不出小鸡的鸡蛋呢?人类和母鸡是怎么区分这两种蛋的呢? 写化学反应式,并计算各质量的质量比 苟(组词)十万火急! 中国的傣族是一只有着悠久文化传统的民族,人口近百万.主要散布在云南西双版纳傣族自治州.西部傣族景颇族自治州以及耿马孟连等自治县.泼水节是傣族最为重要的节庆.每年阴历四月举行, 物质在化学反应中的质量是(怎么)的 写家乡景物的好词、句、段 估测下列物体的质量需要估测的物体分别为:一枚80分的邮票 一只苹果 一枚一元硬币 一头大象 一只公鸡 太阳 月球 地球 求 如“能使带火星的木条复燃的气体O2,极易溶于水的气体是NH3,HCL,能使澄清的石灰水变浑浊的气体是CO2 苟怎么组词 估计以下物体的质量!先谢了一个鸡蛋约为______克;一个健康的成年男人约重________千克;一辆中等载货车限载______吨;一瓶50毫升的"鲜橙多"果汁为_______克. 没和公鸡接触过的母鸡下的蛋在一定温度下能孵化出小鸡? 苟可以 组词 如何估测物体的质量回答简练一点 什么气体加入澄清石灰水不变浑浊,带火星的木条会熄灭 空气为什么会振动发声?可以关于压缩空气的 估计出以下物质的质量,如题 物质有:邮票,成人,太阳,苹果,大象,月球,1元硬币,鸡,地球,请估计出以上9种物质分别的质量 为什么母鸡跟公鸡没交配就能有小鸡? 怎样使空气振动发音,我知道空气振动会发音,但不知道在什么情况下,什么结构中(有共性的结构)才会发音. 鲁迅的《故乡》中刚开始用的景物描写有什么作用共两处,1:时候既然是深冬;渐进故乡时,天气又阴晦.心禁不住悲凉起来了.2:第二日清早晨我到了我家的门口了.瓦楞上许多枯草的断茎当风 镁和氧气反应生成什么?谢谢了,大神帮忙啊 击碗,碗里有水,声音是空气振动发声还是碗振动发声声音音调不同,是因为碗振动部分的长短不同还是空气柱的长短不同 故乡鲁迅描写句好处 小心翼翼(解释词语意思) 靠空气柱振动发声的乐器有哪些? 小敏家里养了4只鸡,可奇怪的是她用这些母鸡却总是孵不出小鸡进行了仔细分析,终于弄清楚其中的原因—— 氯酸钾和什么反应产生氧气拜托各位大神 身临其境中的“临”是什么意思? 母鸡能孵小鸡为什么人不能 描写事情的好词好段(段要有5句以上)词是四字词,段要有5句以上 身临其境的“临”是什么意思? 计算下列物质的相对分子质量1.氯气(Cl2)2.硫酸(H2SO4)3.氢氧化钙(Ca(OH)2) 什么是氧气反应?谢谢了,大神帮忙啊
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘