锁定老帖子 主题:不建议使用jquery的情况
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-02-21
javascript初学者 初学者很容易被jquery所提供的各种效果所吸引,平时焦头烂额都写不出的效果,被jquery几行代码轻松实现了。初学者如果在这个时候就用jquery来开发,打击自己的信心还算小事,更严重的是,jquery的理念"write less,do more"。但是,一个初学者如何能提高自己的水平?一个重要的方法就是多写吧!而这和jquery的理念是相矛盾的。更需要指出的是,jquery把javascript中比较重要的DOM和浏览器差异都解决了,使用者不需要为这些事情编写兼容性代码,这虽然提高了效率,但却不利于初学者培养扎实的javascript功底。 行为比较复杂的项目 比如网易邮箱,包含大量的ajax技术。虽然jquery在新的版本中号称具有800%的速度提升,但是那只是指DOM遍历的速度。而且,即使速度提高这么多,现在的jquery获取DOM节点的速度仍然比标准DOM方法(getElementById)高出4倍(这个是我自己测试的结果,大家可以自己试试)。当网站行为比较复杂的时候,这些微小的差距会累加,从而影响网站性能。 超高访问量的页面 当你的页面在考虑去掉缩进和多余空格来减小传输量的时候,你应该把jquery毫不犹豫地去掉。这将显著减小网站流量。 只需要jquery的一个功能 老实说,这并不是一个致命的错误,只能算一个不好的习惯。比如很多时候为了获得一个getElementById的简写,不惜引入庞大的jquery,这虽然算不上大问题,但有责任心的开发者不会做这种事情。 最后是我认为适合使用jquery的场合:中小型网站,专题,具有一定javascript经验的人。 水平有限,欢迎大家不吝指教。 原文在CanQue@rssidea:不建议使用jquery的情况 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-02-22
任何事情都有利都有弊。
你不能因为无法让初学者不能学好SQL,就不用Hibernate/jpa吧。 任何高层的API都会封装底层的API,效率永远都是第一位的。 |
|
返回顶楼 | |
发表时间:2008-02-22
不敢苟同:
1、初学者提高功底和是否学习、使用jquery没有必然相悖的因果关系,反过来体会到jquery的强大和便捷,更能领略包装、重构和创造性思维的价值,而陷入浏览器兼容性泥潭也根本无助于提高js功底。 2、你第二个论点我没看懂,不知道你要表达jquery的慢,还是快?DOM的快和复杂UI逻辑不适用有何关联? 3、一个ajax页面中缩进和空格占多大比例?很小!怎么可能显著减少网咯流量,相对ajax异步特性所减少的网络流量微不足道。 4、对于一个项目来说,若是一个jquery能解决web UI的全部应该是天大的喜事,至于“庞大的jquery”我不知道你指什么?组件库吗?只要使用ajax方式就少不了UI库,要知道jquery可最精简的主流ajax框架,和ext比起那是十分之一的概念,小一个数量级,何来庞大? |
|
返回顶楼 | |
发表时间:2008-02-22
谢谢fight_bird的回复。
1,我是指初学者在开发中使用jquery,而不是指学习jquery。或者我的表述容易让人误会,我的意思是初学者应该尽量使用原生的javascript,这样提高对javascript的认识。如果你连document.getElementById、闭包、匿名函数都不知道,还谈什么“领略包装、重构和创造性思维的价值”?浏览器兼容性应该是学习javascript一个重要的挑战吧? 当然,你可以说.我使用jquery,但我还是可以学习啊?你要这么说那我也同意。不过请你想想,当你连一个菜单代码都看不懂的时候,去看jquery代码的恐惧。 2,当然是jquery慢,行为逻辑越复杂的页面对代码效率要求越高,jquery不一定适合。 3,请注意我的前提:“当你的页面在考虑去掉缩进和多余空格来减小传输量的时候” 另外,你可能也知道,jquery packed以后由94k变为29k,你能说去缩进,空格等没有意义吗? 4 你说一个项目,用jquery解决UI是天大的喜事,我同意。所以我才会说适合jquery中小型的网站。庞大是相对的,你硬是拿ext来比我也没办法。但是你有没有仅仅为了在一个页面里使用类似于$('#box').toggle()而引入jquery呢?(我是说某些独立的页面,不是网站) |
|
返回顶楼 | |
发表时间:2008-02-22
其实楼主说的一部份,也是我现在正在担心的问题。
|
|
返回顶楼 | |
发表时间:2008-02-22
rssidea 写道 谢谢fight_bird的回复。
1,我是指初学者在开发中使用jquery,而不是指学习jquery。或者我的表述容易让人误会,我的意思是初学者应该尽量使用原生的javascript,这样提高对javascript的认识。如果你连document.getElementById、闭包、匿名函数都不知道,还谈什么“领略包装、重构和创造性思维的价值”?浏览器兼容性应该是学习javascript一个重要的挑战吧? 当然,你可以说.我使用jquery,但我还是可以学习啊?你要这么说那我也同意。不过请你想想,当你连一个菜单代码都看不懂的时候,去看jquery代码的恐惧。 2,当然是jquery慢,行为逻辑越复杂的页面对代码效率要求越高,jquery不一定适合。 3,请注意我的前提:“当你的页面在考虑去掉缩进和多余空格来减小传输量的时候” 另外,你可能也知道,jquery packed以后由94k变为29k,你能说去缩进,空格等没有意义吗? 4 你说一个项目,用jquery解决UI是天大的喜事,我同意。所以我才会说适合jquery中小型的网站。庞大是相对的,你硬是拿ext来比我也没办法。但是你有没有仅仅为了在一个页面里使用类似于$('#box').toggle()而引入jquery呢?(我是说某些独立的页面,不是网站) 呵呵,对第二点有点不同意见哈。。。 行为逻辑复杂的页面不一定对代码效率要求很高,反而对逻辑的执行方面要求较高,jquery的selector正是发挥长处的时候,,如果一个表单n多的输入框,进行某个操作后有若干的相关的输入框的操作,如果自己写js代码,呵呵,我相信能写好,但是这样的东西一多,自己js代码都看花眼了,更加不要说进一步开发调试了。。。 对代码效率要求高的页面当然最好是自己写,但是如果自己写的代价太大,也可以考虑牺牲一部分性能来换取开发速度和正确性。。。 |
|
返回顶楼 | |
发表时间:2008-02-22
rssidea 写道 谢谢fight_bird的回复。
1,我是指初学者在开发中使用jquery,而不是指学习jquery。或者我的表述容易让人误会,我的意思是初学者应该尽量使用原生的javascript,这样提高对javascript的认识。如果你连document.getElementById、闭包、匿名函数都不知道,还谈什么“领略包装、重构和创造性思维的价值”?浏览器兼容性应该是学习javascript一个重要的挑战吧? 当然,你可以说.我使用jquery,但我还是可以学习啊?你要这么说那我也同意。不过请你想想,当你连一个菜单代码都看不懂的时候,去看jquery代码的恐惧。 2,当然是jquery慢,行为逻辑越复杂的页面对代码效率要求越高,jquery不一定适合。 3,请注意我的前提:“当你的页面在考虑去掉缩进和多余空格来减小传输量的时候” 另外,你可能也知道,jquery packed以后由94k变为29k,你能说去缩进,空格等没有意义吗? 4 你说一个项目,用jquery解决UI是天大的喜事,我同意。所以我才会说适合jquery中小型的网站。庞大是相对的,你硬是拿ext来比我也没办法。但是你有没有仅仅为了在一个页面里使用类似于$('#box').toggle()而引入jquery呢?(我是说某些独立的页面,不是网站) 呵呵,感觉楼主有些炒作名词的嫌疑哟。标题虽是“不建议使用jquery的情况”,但细看内容,若把jquery改成prototypejs或者mootools似乎也都成立,这样这篇文章可以改做“不建议使用ajax组件库的情况”了。 以下是在下的几点拙见: 1.请不要说某某初学者在开发中学习ajax库,我希望公司项目中使用某某东东的时候,总会有一员大将可以掌控这门技术的,在开发中尝试新技术,即使是个老手也要担风险,更别说初学者了,让一个啥也不懂的去尝试新东西,这个公司的经理没有为公司负责。 如果是学习的话,您认为是借鉴性学习好呢?还是探索性学习好呢?前两年prototypejs刚出的时候,连文档都没有,几乎用ajax的老手都会建议新人去啃啃prototypejs代码,因为这样可以开辟js的新境界,怎么现在ajax库纷繁辈出,文档齐全反而不建议去学习了呢? 请恕我直言,天下文章一大抄,谁学习不是从看别人的代码开始的呢?你不让新手去抄jquery,他们就只好去抄以前那些老书上的代码,结果学了半个月学了alert(),document.write(),window.open(),代码毫无格式,写得乱七八糟,养成了坏习惯估计都改不过来了,到时候怕是咱们连哭都来不及。 2.jquery慢,prototypejs慢,mootools慢,但是那些代码都是经过优化的,(这里请恕我假设ajax库的里功能大家都能自己实现——不过在下水平有限,大部分都不会做。)你能保证仓促中写出的代码比经过多数人检验的代码更好,更快,更稳定吗? 打一个不恰当的比喻,谁都知道汇编比c快,c比java快,java比动态语言快,那怎么不见别人都用汇编呢?呵呵~咱们也不是说效率不是问题,但伟大的先辈说过“如果你不确定代码需要优化,那么千万不要试图去优化它。”这样来说,只有在确认ajax库成为瓶颈的时候,才应该去考虑它,而不是先假设它会拖慢整个项目。:)敏捷一些(希望不是贬义,有人对这意见比较大,可能会反过来说“你才敏捷呢,你全家都敏捷。”)。 3.服务端和客户端缓存是解决这个问题的主要途径,而不是删除某个文件。不过过多的js会占用带宽,够用就好,千万别贪多哟。具体问题具体分析。 4.请恕我臆断,一个简单到仅仅需要$()的项目究竟是个什么规模。看起来似乎连crud和高亮的功能都没有,听起来这这是一个静态页面,那么它的确没有使用ajax库的必要,因为他太简单了,简单到,即使加上了ajax库也不会有任何影响:),客户不会感觉到这个页面多了十几二十k,反而是使用了ajax库的开发者会如虎添翼,使用ajax库不但拥有的简练强健的功能,更多以后的功能扩展提供了便捷的途径,何乐而不为呢? 哦,如果我想得太复杂了,实际上页面就是太简单了,仅仅用到$(),好吧,可能美工就可以去做一个这样的页面了,连程序员都不用找,ajax还是省了吧。:) PS:很可惜楼主没有指出jquery区别于其他ajax库的特点,我对jquery是浅尝辄止,因为它实在太好用啦,selector如此便捷,让我根本不用去想这个功能去js里应该怎么写,所有操作完全使用jquery提供的api就可以实现,甚至连el都封装好了,提供了各种常用函数,这让我觉得胆战心寒,害怕会因为这种便捷让自己完全依附到jquery上,怕我学会jquery的时候就不会用js了。想到这点我打了退堂鼓,从此以后再也没有使用过jquery。 不过在我接触了ext之后,这种疑虑被打消了,ext整个库400k+,比jquery大20多倍,封装的比jquery厉害没有20倍,估计也差不多,但随着学习的深入,不但没有扔掉以前学的js,反而更加强了,因为它给我提示了不同的应用可能,这种眼界的开阔可比你自己乱试要厉害很多,因为你是跟着这世界上最优秀的ajax库之一的作者在学习。 因此我的建议是,如果有可以节省我们时间精力的ajax库,那么最好第一时间去试一下,即使不实际使用,也不要放弃开阔眼界的机会哟。至于项目中是否使用,请根据各自情况选择: 1.团队中是否有人对此熟悉,至少做到80%问题可以立刻解决,10%的问题花点儿事件就能解决,10%的问题知道怎么迅速绕过去。 2.网路优化上我不擅长,实际情况实际分析吧。extjs太大了,好多地方都用不上,其他底层库那么小,估计不会有很大限制。当然还是有特殊情况,所以才要实际情况实际分析,咱们不把话说死好了。 ^_^祝大家好好学习,天天向上。 |
|
返回顶楼 | |
发表时间:2008-02-23
回复:xyz20003
是不是因为带了两个url,你怀疑我炒作? 1,我说的不适合一开始就用jquery来开发,而不是分析jquery代码。当你能分析jquery,能看懂prototype的时候,已经不是初学者了。 2,时间仓促?那我支持你用jquery,他本来就是为快速开发来的。 3,具体问题具体分析,我同意。这一点大家评判时都忘了我的前提,让我很郁闷,我不打算再讨论这点。 4,我说的是一个页面,比如一个简单的专题页面,或者一个投票页面。还有我也指出了,这并不是错误,只是不好。 |
|
返回顶楼 | |
发表时间:2008-02-23
回复:wangdi
嗯,说得有道理。 |
|
返回顶楼 | |
发表时间:2008-02-25
我有一个建议
大家都去搞汇编 搞项目的时候先搞个文本编辑器出来写代码 不过得先写个记事本用来写代码 哎? 好像得先写个操作系统吧 不对,应该先搞电路板,弄个PC出来 无尽递归...... 那就用纸吧!! |
|
返回顶楼 | |