大家都怎么看 jQuery - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
preper
V2EX    前端开发

大家都怎么看 jQuery

  •  
  •   preper 2016-12-16 11:35:21 +08:00 3303 次点击
    这是一个创建于 3220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先,必须承认 jQuery 是一个伟大的库,在古老的 ie6 时代延长了前端开发的寿命。

    但是到了今天,淘宝也已经声明不打算支持 ie8 了,我觉得 jQuery 的定位越来越尴尬了。作为一个前端新手,说说我的感受: 选择器的话,$选择器真的很强大,但是把那么多方法全部封装到$里,理论上来讲效率是十分低下的(当然,在 chrome 下也就是毫秒级甚至都不到的差距),而且现在切页面写样式基本都用 class ,选择元素 id 选择器能满足七成的需求,剩下的用 tag 选择器或者自己封装一个兼容的 class 选择器也都能应付过去。 绑定事件,个如果不考虑 ie , addEventListener 足够,考虑 ie 也只需要做一个 attachEvent ,考虑绑定函数传参和 window.event 兼容。 jQuery 的$.ajax 是最难找到替代的模块。因为我们这里开发是用的 jsonp 回调,原生的 xhr 用不了,找了好多关于 jsonp 调用的文章才看到用 js 实现的。在找的过程中看到大票的推荐 jQuery 的$.ajax 的人也改变了我对 jQuery 的印象。

    (以上经验没经过 ie 甚至 ie8 的蹂躏,所以有不对的地方请轻喷。。菜鸟心里有点脆弱)

    说了这么多,先总结一下我对 jQuery 的态度:最开始是不喜欢,因为 jQuery 用多了觉得没学到东西, js 还是一窍不通。说自己是前端开发吧,还不如说自己就是个切图的。后来打算抛弃 jQuery ,对 jQuery 也是一直在半黑不黑。之后有幸自己写了点东西,打算用原生 js 实现。过程很坎坷,但是真的学到了很多。对 jQuery 也越来越佩服。不过也用不回 jQuery 了。做完这个网站之后又有一个东西困扰我,拿出原版 jQuery 写的页面和我用 js 写的页面对比,在 chrome 里的 timeline 看数值都差不多, jQuery 效率低下到底是理论上的还是真的能看出差别?也是个困扰我的问题。

    希望 v 站大牛能理性讨论,觉得我说的有问题欢迎指正,只求不喷,只求不喷,只求不喷。

    12 条回复    2016-12-16 15:29:31 +08:00
    chemzqm
        1
    chemzqm  
       2016-12-16 12:58:40 +08:00   2
    不管 jquery 还是什么其它的框架类库开发工具,都是些方便开发的工具罢了,本身并没有好坏对错而言的。
    jquery 性能问题主要体现在批量操作 dom 上,容易出现性能差,动画延迟,除非你做复杂的动画效果,不然根本体会不到,而且网站 99% 的性能问题在于资源加载,你的 js 就算执行慢几倍用户也基本体验不出来。
    jquery 的主要问题:

    * 组件化机制不标准,难以重用,容易出问题, CommonJS 以及 es6 的 module 可解决这个问题
    * 业务逻辑和 dom 操作混合进行, 业务复杂以后无法维护, jsx 算个不错的方案
    * 设计理念对于错误过于包容,例如找不到 dom 并不会报错,这对开发友好,但是后续维护会导致调试很麻烦

    jquery 一直都是网站开发的利器, 只是我们现在有了针对复杂应用以及规模化开发的更好方案。
    SourceMan
        2
    SourceMan  
       2016-12-16 12:59:25 +08:00
    用眼睛看,用心记
    learnshare
        3
    learnshare  
       2016-12-16 13:13:33 +08:00   1
    jQuery 跟 IE 是否存在无关
    jQuery 只是个工具库,简化开发难度,提高开发效率。

    上班走路去也行,只不过大家都坐地铁,因为快,舒服。
    huijiewei
        4
    huijiewei  
       2016-12-16 13:20:19 +08:00 via iPhone   1
    10 年前 把我从浏览器兼容上拯救出来
    loading
        5
    loading  
       2016-12-16 13:21:29 +08:00 via Android
    该用就用。
    直接说坚决不用的要么是傻,要么还是傻。
    movtoy
        6
    movtoy  
       2016-12-16 13:30:25 +08:00   1
    如果你不是 FB GOOGLE ALIBABA BAIDU 这个级别公司里的领导~什么效率低下都是借口,追星族心态而已~
    alexsunxl
        7
    alexsunxl  
       2016-12-16 14:12:10 +08:00   1
    jquery 挺好用的, 浏览器从 jquery 那里学来不少东西,比如选择器,比如 classList 。
    反正现在的话,看场景吧, 有的时候会有 react 。 而且本身 jquery 也在不断的发展,以后甚至可能激进些搞得断代了,就变成和 python 一样,说之前要带版本号了。
    最后顺便吐槽一句, 千万不要以为移动端就选 zepto 了, 照样直接上 jquery , zepto 才是真的定位尴尬,非常垃圾
    preper
        8
    preper  
    OP
       2016-12-16 14:57:36 +08:00
    @huijiewei 没经历过兼容 ie6-8 的小白表示只兼容 ie8 就让我对 jquery 肃然起敬了
    preper
        9
    preper  
    OP
       2016-12-16 15:03:43 +08:00
    @learnshare 主要是觉得 jquery 用多了反而不懂原生 js 了,现在觉得还是应该至少过一遍 jquery 的源码,常用的 api 要仔细阅读,自己写过之后和 jquery 对比也能巩固基础+学到新东西。
    ianva
        10
    ianva  
       2016-12-16 15:16:24 +08:00   1
    估计挺多人都没经历过 ie6 兼容的年代,没有库的年代
    可知道 innerHTML 这个 IE 系弄出来的 api ,操作其实是异步的?
    可知道 ie6 下 对 table 之类的 tr td 是没法直接插入内容的?
    可知道 .css() 这个 api 要考虑多少东西?
    上面这类问题可以波及到几乎每个 dom api 的细节

    那个年代没基础库就基本没法开发项目,即便是 yui2.x 这版本都也有多漏洞,而且 api 非常难用

    jquery 就解决了这些问题,而且 api 非常易用,如果那个年代有人说我要离开基础库去写 js ,那是真没法运行,问题太多了。

    但现在浏览器没这么多问题了,所以 jquery 就没以前这么大意义,但有两点, api 比 dom 易用,插件积累多年。

    至于操作效率从来都是可以忽略的问题,上规模的操作或许会有,但效率不是来自原生的对比,而是和 react 这里东西对比,因为创建及操作一个 element 的开销非常的大,这是原生 api 自身的问题。

    而现在真正 jquery 的问题是在于大量 CURD 的项目里,生产力太低
    est
        11
    est  
       2016-12-16 15:18:22 +08:00
    jQuery 谁不用谁傻。

    但是找工作千万别说你只会 jQuery 。
    onlyhot
        12
    onlyhot  
       2016-12-16 15:29:31 +08:00 via iPhone
    好用 我是后端
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1042 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 18:25 PVG 02:25 LAX 11:25 JFK 14:25
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86