V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
preper
V2EX  ›  前端开发

大家都怎么看 jQuery

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

    首先,必须承认 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   ·   我们的愿景   ·   实用小工具   ·   1280 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:54 · PVG 01:54 · LAX 10:54 · JFK 13:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.