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

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

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

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

鲍尔默宣布下台后,微软应该做好这几件事情 IGT张奇伟:从空间物理到博彩游戏研发 Bing即将推出新功能 用户可直接在搜索结果页购买商品 【开源专访】郑晔谈Moco框架的前世今生以及Java编程之道 CTO俱乐部第108期下午茶:电商在微信上的现状与未来 SDCC 2013讲师议题确定 门票即将售罄(图) 简化工作流程,10款必备的HTML5开发工具 六大领域考评鲍尔默微软掌舵能力,只一“C”尔? 剥离自雅虎的Hortonworks:低调发展,三年融资近1亿美元 Google的中国梦如何死于傲慢与不得力公关 [回顾]昨日黄花,那些被人们遗忘的11个操作系统 管理企业级API的7个最佳实践 Java 与 .NET 的平台发展之争 英特尔正在开发3D深度感知摄像头 可读出人类的情绪等 从数据平台到运营平台:国产开源移动统计Cobub Razor发布0.6版本 八月网络事故频现,CN域名遭最大规模网络攻击 Google云平台或将成为Amazon最大竞争对手 Camera360宣布完成1800万美元B轮融资 利用ZK Ajax框架 高效扩展Web App Web开发者需养成的8个好习惯 GitHub工程师专访:奶昔+海象+游泳池=开源 Paymill发布移动SDK,实现应用内直接支付 免费到付费:全球第二开源Web Server Nginx“堕入”商业化 乐视发布新版智能电视操作系统LetvUI 2.3—Schnauzer 进步还是灾难的开始?科学家首次通过互联网实现“心灵感应” 叫板Apple TV 谷歌发布Chromecast的iOS应用 性能提升100倍的秘密武器:一行SQL代码的妙用 60个开发者不容错过的免费资源库 专门针对初学者的Node.js教程 初创公司Parse.ly:1年内捕获1.6亿独立访问用户,收入增5倍 融资新方式:用未来10年收入的6%融资10万美元 大家一定要帮帮我~~~~~~~~~ 一个关于重载的问题! 不活了 不活了.... 在VC中讲Edit控件的属性设置为ReadOnly后,如何改变控件的背景色??? 深圳的户口政策以及用人单位对户口的态度是怎样的? 200分求购一个VB写的用mciSendCommand播放VCD或者AVI的例子!!!!!!!! 请问大家认为数学对程序员来说是一个怎样的地位................ 紧急,求救!!!!!!!!!!!!!!! 请问在GSM MODEM编程中,如何知道短信是否已发送到目的手机! 急:为什么都用uses包含了,还是报告说没定义变量? 删除表时遇到的问题 *************stringgrid的问题?????? 再问几个问题 如何查找csdn上网的朋友 用 ADO 对 Oracle blob 字段读写 (谁能解决送1000分) 请问oracle9i比oracle8i多了那些功能?这个产品是否成熟? VB读串口数据 请问,你们做项目一般用什么分析设计方法,生命周期法? 快速原型法? 面向对象分析设计法?? 请问如何用query删除一个记录???????????????????????? 请问那里可以下载到雷电(指点一下也给分)……………… 初级问题,关于硬盘文件格式转换,请多多帮忙,谢谢! 那里有比较好的软件公司 毕业设计选题 谁有读写注册表的原代码? 请问那位大哥有画切线的C语言算法 如何使页面上的按钮被点击后自动打印当前页面? 哪儿可以下载星际争霸? 注册表中如何建新的主键?30分 寻求在tc下设置640*480(256色)模式的代码 DELPHI 真的好难 哪里有支持ASP+access的免费空间?!!30分 SaveDialog该如何使用? 为什么csdn把大家的回复都发到我的邮箱里去了???!!!! 我在学WinSocket,请问现在外面WinSocket吃香吗?一般做什么东西要用WinSocket的?找的到工作吗?还有Qos,RAS是什么东西?有人学吗?好象和编程不搭架的? 我的显卡OpenGL在Win2000下用不起来,驱动是对的,显卡是Creative TNT2 ?SOS D盘没了! 请教一条SQL语句 你们认为我是学VC好还是学BCB 请问哪里有VBscript函数的详细介绍呀? 如何在程序中给系统一个鼠标中键按下的信号?请给出详细的源代码 *********_____-------___---简单问题大送分!1!!!!!!!!!()()()))))))))))))))))))))()(((&&&&&&&&&& 关于java中的画矩形,详细内容情进 沈阳有没有要DELPHI或BCB开发的人呢?我不要钱白干不行? 为什么我使用了Win32组件提供的工具栏控件,也不能。。。。 一个错误 挥泪大送分!!!(硬盘分区调大且数据无损的算法?)(详见正文部) OICQ的Ctrl+Alt+Z ////在一个工程中加入其它工程中的窗体,因为同为Form1所以要改名。保存后退出,但下次再打开此工程时会出错,为什么,怎么解决? 如何向外界表露被聚合的组件的接口?COM高手不要错过! 升级 救命呀!!!SNMP的SOS, SnmpExtensionQuery不能接到SET !!!!!! 救命呀!!! 材料二 在北京人生活的洞穴里,用火的遗迹十分集中 灰烬堆积很厚 材料二证明了什么?他所证明的史实有什么意义 201不锈钢生锈怎么处理 钢水浇铸成车轮, 科技小论文500字 液化现象的是?A从冰箱中取出的冰化成水B清晨河面上出现雾霜C冬天农家的屋顶上铺了一层霜D钢水烧灼成火车 初中科技小论文400字 证明具有教学实践经历的相关材料求范本 春天到冬天的英文?火车飞机船的英文? 科技小论文400字,谁能帮帮我呀? 什么是个人的教育教学实践经历? 人生的启示作文450字 低碳的科学小论文400字左右 教学实践经历证明材料怎么写, 作文:生活中的科学 450字以上急,现在就要!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 不锈钢和锌合金哪个成本高?不锈钢201,202,304,410,430,马口铁,铝等金属成本采购价的排序? 教学过程的本质是什么?(运用教育学来说明) 不锈钢表面拉丝、磨砂、喷砂的区别请不要所答非所问说对了给高分 铝铁铜与锌合金的最大区别 记一次实验!要400字以上,苏教版六年级下册的习作4,要写一次实验,最少400字!明天就要交~ 中国共产党成立89年实践经验证明了什么? 不锈钢板磨砂面和拉丝面有什么区别表面看起来有什么区别 轻重工业在工业总产值表明我国当时工业化的特点是什么,结合 说明形成这个特点的必要性 如何在铁板上做不锈钢拉丝效果? 出炉的钢水变成钢锭,这是现象,需要热? 查找课外资料,结合教材内容简要说明马克思主义诞生的历史条件有哪些,它的诞生具有怎样的时代意义. 浇铸是指高温钢水变成钢半成品,这是什么(填物态变化的名称) 钢水变成钢锭 质量怎么变化? 用历史与现实材料说明中国人民选择社会主义道路的必要性和正确性近代史纲要的作业、、、、 初中科技论文200-250字请认真回答 钢水凝固成钢锭后,其质量 什么?为什么 亚光不锈钢、拉丝不锈钢和镜面不锈钢的区别 初一科学小论文 只要200字只要200字 严冬窗玻璃的内侧结冰是( )现象,卫生球放久了会变小,甚至消失,是( )现象.钢水浇铸成钢球是( )现象,冬天早晨草地上的霜是( )现象? 拉丝不锈钢和镜面不锈钢的区别 如何处理不锈钢在拉丝后变黑不锈钢在高温下拉丝后,时不时产生黑色的纹路,要如何处理才好啊? 以低碳经济,低碳生活为主题的科学作文(四年级500字以上)要参赛的, 拉丝不锈钢怎样用全自动抛光机抛成8K镜面,一般的液体蜡行吗 试了几种液体蜡都达不到效果,不知怎么办?急, 关于环保节能的科技小论文500——600字之间 作文 500字 生活与科学明天要交的,急 不锈钢做拉丝处理 和 镜面处理 两种工艺 那种磨损比较严重呢 求一骗 科学小论文500字急啊、求的是科学小论文500字以内 拉丝不锈钢的丝有什么含义 作文一次成功的尝试 400字 吃冰棍时,冰棍( )热,用钢水浇火车轮时,钢水要( )热. 各种类型钢的出钢温度和浇注温度有什么联系?怎么判断钢水的流动性?急,恳请炼钢的老前辈们给在下指点迷津. 一次危险的尝试作文400字 为什么钢水铸造要高温出炉低温浇注 科技让生活更美好作文的征文要500字,有具体事例 有关“成功”的作文(400字) 怎么解决不锈钢生锈问题呢? 家里装修想买水龙头,听说有铜的、铁的和锌合金的怎么区别呢?我怕买到不好的,谁能帮帮忙把优缺点都说说? 作文《一次成功的尝试》400字结尾 怎么防止不锈钢生锈 铜与锌合金的区别比如材质 耐腐蚀性 成本 耐磨耐压 强度、硬度 耐蚀性 使塑性 等各个方面 电梯发纹不锈钢和拉丝不锈钢有什么区别,二者造价哪个贵啊 不锈钢生锈该怎么处理的好?我是做不锈钢门窗那些的.用201的材料.经常生锈,该怎么处理的好?酸洗指的是怎么洗?真的可行吗? 家里装修想买水龙头,听说有铜的,铁的和锌合金的怎么区别? 从材料中可以看出这是诸葛亮给谁的建议?此建议是否正确?结合史实说明 材料二反映了什么形势?材料一:“今操已拥百万之众,挟天子以令诸侯,此城不可与争锋.孙权据有江东,已历三世,国险 304不锈钢做了拉丝工艺 放在海边用 严重生锈 有什么办法除锈和保护措施说明下 设备已经安装 不能拆下来处理的 用酸洗什么的肯定不行 用防锈膏先仔细擦一边 然后打蜡行吗 锌合金和铁怎么区别
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn