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

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

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

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

当“硅”已走到尽头,我们又该用什么去维系摩尔定律? 高端大气上档次 8位iOS顶级女程序媛 谁都可以做开发者:微软推出Windows Phone Web工具 Mozilla正式发布Firefox 23 新增混合内容拦截 网络监控功能 14条建议,使你的IT职业生涯更上一层楼 依托微信的电商产品实践——SDCC 2013讲师潘凡专访 IBM将向Google、英伟达等授权Power架构技术 人脑研究将推动下一代网络革命?从大爆炸到大收缩 H3C携手F5将“空转”数据中心变为“分布式数据中心” W3C小组发布Web存储API推荐标准 开发者必备的6款源码搜索引擎 闪亮登场:开发者制作图形图表所需的11款JS工具包 来自两位技术大牛的博弈:HBase或将制霸NoSQL? 应用改变世界 2013英特尔&#174;创新应用大赛火热开启 看13位CEO、创始人和高管如何提高工作效率 对首次购买智能手机用户而言,苹果吸引力并不大 Amazon Appstore面向Web应用开放 开发者可添加应用内付费功能 CSC收购成功转型的大数据初创公司InfoChimps 嘀嘀打车发展报告:成全球最大出租车调度平台 又摊上事儿了,Android的MasterKey再次出现bug 比特币挖矿必备工具 硬件性能大比拼 RDBMS vs. NoSQL:反派为什么会得以存活并发展壮大 帮助优化移动网站:谷歌发布新指南和PageSpeed Insights工具 增强Web可用性,你需要避免的七大设计错误 Python六大开源框架对比:Web2py略胜一筹 海外看中国:老外开发者间流传着的7件事儿 京东云峰:电商移动云平台背后的技术 初创公司DigitalOcean:55秒搭建一个云服务器 分布式系统事务原子性的非阻塞实现 IBM发布基于人脑特性设计的全新计算架构和编程语言 16款加速编码的HTML5在线工具 请教一个局域网视音频合成传输的问题!!! 不好!出现错误!请帮忙! 有谁对java3d熟悉阿,急需探讨 暴笑中国队连环画 谁能帮帮新手啊!!!!! 如何通过一个网卡用adsl将整个局域带上网 程序中的消息对话框怎么不直接蹦出来,而是要按一下Alt才行? 程序中的消息对话框怎么不直接蹦出来,而是要按一下Alt才行? ListBox->Items->Add()的问题! 为什么我们的局域网内客户机不自动得到dns server 和默认网关??? 请推荐几款多系统启动控制软件 问各位高手一个很菜的问题! 数据窗口中的检索数据问题 毕业设计要交了!急啊!请问fastreport预览时,怎么没有“页面设置”菜单?? SetCellTextColor 的问题 ===读取时如何成比例的改变一张图片的尺寸及大小=== 毕业设计要交了!急啊!请问fastreport预览时,怎么没有“页面设置”菜单?? 意大利终于出线了 QuickRep1.PrinterSettings.duplex中duplex(双重,双向)是怎样用? 怎样使FORM上默认的最大,最小按钮变小一点,比如象OICQ的FORM上按钮? 关于servlet的问题 数组使用的问题,两种下标为什么只一种可以? 关于C语言编写数值计算的,事关人命啊~~~~ 关于组件问题? 急!急!急!一个宽带的问题? 做了个网站,希望大家看看!!!www.gz111.net 谁有window blinds的注册码 在DOS下,如何设置成1024 X 768,256色 如何分页显示XML数据岛内容 非常常见的一个问题,现在也没有解决,请高手帮忙。 公司要求学日语,学三个月,没工资,不知道努力学三个月能否达到凑合能用水平 我在昆明的迪信通买了摩托罗拉998++后才发现上当了!! 紧急求救,关于断电 简单:几个子查询合并为一个记录? 请问如何用sql语句查询一段日期之内的数据? 有没有人做过向excel模版导出数据 用户控件之间如何传递参数? help me !!!数据库无法启动!!! java IDE 开发环境有哪些比较小而快? 我的外遇 [zz] 走漏,去内蒙古出差,回头再见兄弟门! 做三维游戏都用什么工具? 各位,等这本书有消息后,我重发贴给你们加分,请问大家关于《Delphi高级开发指南》 asp的access数据库问题!! 急切求助!!!!!!!!!!!!!!!!!!!!! 关于把数据库数据生成excel文件的问题 我对现在的女大学生完全没有兴趣! 这样的人才中国有多少 ? 谁有语音卡驱动原程序 谁用过mp3play.ocx,大侠快来救火? 请问vc程序如何打包,可以在离开vc环境也可以运行? 上海有哪些河流,湖泊上海有哪些河流、湖泊湖泊5个河流10个 黄金比例是多少来着?是通过什么公式算出来的呢? 铁锈的主要成分,是混和物吗? 深海鱼都有哪些种类?他们各自有什么特征? SO2,HBr,CO2通入氯水中,哪些反应,生成什么?SO2为什么生成SO4(2-)而不是SO3(2-) 怎样判别池塘里的PH值? 在溶液中:物质的量浓度相同和PH相同有何区别? 电饭锅的内锅在保温状态下拿掉,忘了拔电源,持续15小时左右,主要担心会不会引发火灾什么的. 怎么判断白醋的PH值不是用试纸的! 深海鱼有哪些 请教2道初二物理题?1.电饭煲的设计是当煲内温度达到103摄氏度时就自动切断电源并转为保温状态 如果用电...请教2道初二物理题?1.电饭煲的设计是当煲内温度达到103摄氏度时就自动切断电源 盐酸与鸡蛋壳反应属于什么基本反应类型 给古诗填表示颜色的词:( )山( )水,( )草( )叶( )花. 家用电饭锅的设计是:当锅内的温度达到103度时,就会自动切断电源或转为保温状态, 质量相同的木块和铁块放入水中,静止后受到浮力大的是?为什么? 把一只新鲜鸡蛋放入盛水的玻璃杯中,向被子中逐渐滴加浓盐酸.为什么鸡蛋会先下沉后浮起,直到没有气泡为止? 家用电饭锅的设计是家用电饭锅的设计是;当锅内的温度达到103度时,就会自动切断电源或者转为保温状态 质量相同的铁块木块放在水中,哪个受到的浮力大?理由 把一只新鲜鸡蛋放入盛水的玻璃杯中,鸡蛋沉入水底.若向杯中逐滴滴加盐酸,鸡蛋会怎样运动?为什么? 风速、湿度、地心引力对弹道的影响有多大拜托各位大神有什么计算公式或者怎样测风速以及风向对弹道的影响 在两个相同的茶杯里分别注入白开水 一只加一小勺蜂蜜 一只加一小勺醋 立即品尝 会发现 什么? 说明了什么 把一个鸡蛋放到盛水的杯中,向杯中逐渐加盐末,会有什么现象?我作了实验没看出什么! 水可以影响地心引力吗?注意要说原因,而且不要太长,七十多个字就差不多了. 每天三餐后,在杯子里加三分之一的白醋,再加两勺蜂蜜,最后加满水.再结合每天跳绳一千下.请问这样可以减肥吗?有什么不好的副作用吗 某有机物由C,H ,O三种元素组成,将该有机物3克充分燃烧生成0.15摩尔二氧化碳和3.6克水,该有机物密度为2.68,该有机物能与金属钠反应.则:1,求该有机物的分子式. SO2通入氯水中方程式 任何物质都有一定的密度吗 天书奇谈的春日祝福(夏日,秋日,冬日)在哪领.我都50了,那回看到一个48的人都有了 狙击枪瞄准镜画面左边的弧线是做什么用的?怎样用? 物理中的物质密度都是多少?要所有的. 夏日的( 如火如荼 )秋日的( )冬日的( )春日的( )选词填空凉意.凝重.轻盈.浪漫. 狙击步枪光学瞄准镜结构是怎样的要图,清楚一点的 物体密度是多少 还有为什么 有关春天、夏天、秋天、冬天的诗 要名句,名句 【春天里有初春、晚春、春雨后】各两条 狙击步枪用的光学瞄准镜的问题.它上面的旋钮的功能是啥?怎么使用的? 为什么PH相等的两种酸,越弱的酸,浓度越大. 描写校园美丽的4字词语 新鲜的鸡蛋放在水下会下沉.如果向水中加浓盐酸,鸡蛋会上浮下沉这一现象说明了什么 解析!盐浓度越大 对应的PH也越大吗请分同元和不同元 如 NH4CL 和(NH4)2SO4 同浓度下 PH 谁大NAF和CH3COONA 浓度PH大小 为什么答案说 它盐浓度越大PH越大,只是增大的幅度小了 深海鱼为什么可以在没有阳光的深海里生活?可是,不是说生物的生活离不开阳光吗? Al(OH)3电离出H+,AlO2-,H2OH+和弱碱的OH-反应生成H2O那么为什么Al(OH)3不能溶于弱碱 将SO2通入加了少量氯水的氯化钡溶液中,现象是---,有关反应的化学方程式为--- 怎样把盐水中的盐和水分离开来? Al(OH)3算弱酸还是弱碱?在水里电离出什么? 什么东西能去铁锈 Al单质与弱酸,弱碱,反应不? 浮力的计算题一物体体积是0.5立方分米,完全没入水中,收到浮力为多少?如果物体重4N,它在水中的状态怎样? 将等体积的二氧化硫和氯水混合,通入加有品红的氯化钡溶液,有什么现象?四个选项:A溶液快速退色 B溶液缓慢褪色 C生成白色沉淀 D生成浅黄色沉淀 AL(oH)3 能和弱碱反应吗?为什么? 描写西湖冬季的诗句如上 氧化铁不是合金,它是纯净物. ( )的湖泊 ( )的江河 11氯水中通入二氧化硫:生成什么啦?方程式是啥啊~ SO2,SO3混合气体通入浓氯化钡溶液中什么现象会有SO2逸出么?SO2不会生成H2SO3么?生成之后不会生成BaSO3沉淀么? 那些城市名和河流湖泊有关 有哪些描写冬天西湖景色的诗?作者题目以及诗句 氧化铁是纯净物还是化合物?问题是氧化铁是纯净物还是混合物? 欧洲的河流湖泊主要外流河()()注入大西洋的()()主要内流河注入北冰洋的()()主要咸水湖()()主要淡水湖()() 电饭锅用的过程中电饭锅线与电饭锅连接的底座插头那冒烟,有焦味,之后电饭锅线连接的电源插座也没反应把电饭锅换别的电源插座也不能用了,是不是电饭锅和电源插座都坏了啊而且,当时电 含铁70%的氧化铁是纯净物么
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘