V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ericgui
V2EX  ›  程序员

Vue.js 等前端框架和 jQuery 是什么关系?是替代关系还是可以共存?

  •  3
     
  •   ericgui · 2018-01-13 07:06:08 +08:00 · 24503 次点击
    这是一个创建于 2508 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请高人指点一二。

    如果可以共存,那么,什么时候用 jQuery,什么时候用 Vue.js 等框架?

    备注:前端框架,包括但不限于 Vue,React,Angular,San 等。
    第 1 条附言  ·  2018-01-15 10:44:42 +08:00
    我就是最近在写一个小网站,有些小功能发现 jQuery 好使,有些地方,如果用 vue 就更方便一点。所以才来此问。

    本人不是前端程序员,没想到贵圈真乱。下面吵得不可开交。真是大开眼界。
    第 2 条附言  ·  2018-01-15 10:55:26 +08:00
    真不是钓鱼贴,也没有讽刺的意思。

    就是感觉有点跟不上形式了。

    自己一个人写个网站,仅仅想把前端页面稍微做得好看一点,没想到竟然遇到这么多选择,我也是犯了选择障碍症了。

    哎。。。。。
    第 3 条附言  ·  2020-03-24 01:05:10 +08:00
    800 天前的帖子,今天我自己亲自来挖坟了


    这个问题,是我还在对前端狗屁不通的情况下提出来的

    不过呢,现在看来,虽然前端框架很强大,但在某些时候(很少),还是可以和 jquey 共用的,但现在也都不用 jquery 了,而是用 JavaScript 的 native api,已经足够强大,比如 document.getElementById, document.querySelector 等
    72 条回复    2020-11-18 22:46:15 +08:00
    lhx2008
        1
    lhx2008  
       2018-01-13 07:39:31 +08:00 via Android
    可以共存,但是意义不大。
    看你前端的逻辑和内容,
    前端复杂多变的话(后台,工具类,手机页面)用 mvvm,相比 jq,可以减少很多 dom 操作带来的工作量。
    内容为主的话(博客,论坛)用 jqury 也可以。
    watzds
        2
    watzds  
       2018-01-13 07:53:50 +08:00 via Android
    可以共存,也可以替代。
    AlwaysBee
        3
    AlwaysBee  
       2018-01-13 13:05:17 +08:00
    Vue 和 jQuery 都不能称之为框架
    wizardoz
        4
    wizardoz  
       2018-01-13 13:08:44 +08:00
    不是一样的东西,但是却有替代性,用好了 vue 之类的你将不在需要 jquery。
    fengdra
        5
    fengdra  
       2018-01-13 13:17:53 +08:00 via Android   ❤️ 7
    一个是自动将数据映射到 DOM,一个是手动管理 DOM,一起用不方便
    feverzsj
        6
    feverzsj  
       2018-01-13 13:23:19 +08:00
    前浪和后浪的关系,web dev 就是这么乱,不过 jquery 算是很长寿的了
    lihongjie0209
        7
    lihongjie0209  
       2018-01-13 13:46:13 +08:00
    在 DOM 操作方面, Vue 是 jquery 的升级版
    luruitao
        8
    luruitao  
       2018-01-13 13:55:29 +08:00
    5 楼是最靠谱的,Vue 是建立了虚拟 DOM 到真实 DOM 的透明映射
    SuperMild
        9
    SuperMild  
       2018-01-13 13:55:58 +08:00
    带着这个问题,花三十分钟学习一下 Vue 就有自己的判断了
    LINAICAI
        10
    LINAICAI  
       2018-01-13 14:00:29 +08:00 via iPhone
    jq 我觉得只能算是一个函数封装库罢了,vue 强调 mvvm 的开发模式和组件化的封装思路,至于 dom 操作没研究过 vue 不太清楚,个人认为各有各好处和应用场合
    Phariel
        11
    Phariel  
       2018-01-13 14:08:06 +08:00 via Android
    vue 是模板引擎 jQuery 是增强工具 都不能算框架
    mb135
        12
    mb135  
       2018-01-13 14:39:39 +08:00   ❤️ 13
    Vue 是网红,jQuery 是老艺术家,5 年之后可能很少人能记起来 Vue,10 年之后 jQuery 仍会大行其道。

    过气的网红不如狗,你懂的

    jQuery 最 NB 的地方不是各种新概念,而是只填坑不挖坑,孜孜不倦、默默无闻,不给码农添麻烦。

    而反观各种所谓的新概念框架呢?解决一个痛点的同时,带来 3 个新的痛点,而解决这 3 个新的痛点,需要各种插件各种黑科技,终于解决了这 3 个痛点,你会发现又引出了 9 个新的痛点,如此反反复复挖新坑填旧坑,陷入各种坑里不能自拔
    miketeam
        13
    miketeam  
       2018-01-13 15:15:46 +08:00 via iPhone
    mb135 回答这么直接干嘛,不能吹概念别人该怎么混了啊
    Sivan
        14
    Sivan  
       2018-01-13 15:27:35 +08:00
    @mb135 jQuery 很棒,但 10 年后 jQuery 绝对不会大行其道。响应式框架可能会昙花一现,但 10 年后如果前端还是 jQuery 的模式当主流,这个行业的人可以考虑转业了。
    mb135
        15
    mb135  
       2018-01-13 15:49:03 +08:00   ❤️ 4
    @Sivan 只要 html 语言还在,只要 html 还有 dom,那么就永远有操作 dom 的需求,那么 jQuery 就永远有市场,除非 web 标准内置一套 jQuery,Html5 还真的内置了 querySelector,不过远没有 jQuery 实现的优雅。

    可以说 jQuery 反过来影响了 HTML5 标准的制定,起到了指导性的作用,改写了 web 的历史进程。就凭这一点,目前前端任何框架都没资格跟 jQuery 相提并论。(当然那些碰瓷式营销的的水军脸皮那么厚,谁也管不了他们)

    “文章本天成,妙手偶得之”,jQuery 的 api 让人感觉到 web 本来就应该是这个样子的,作者不是发明了 jQuery 而是发现了 jQuery,“本天成”当之无愧。
    learnshare
        16
    learnshare  
       2018-01-13 15:55:30 +08:00
    可以共存,但由于工作机制完全不同,建议完全替代使用
    zjsxwc
        17
    zjsxwc  
       2018-01-13 16:58:15 +08:00
    不冲突,共存的

    jquery 还是很有用的,dom 操作、deferred 封装的 promise、ajax 操作等等,比手写方便
    slgz
        18
    slgz  
       2018-01-13 17:19:52 +08:00
    感觉用了 vue 等之后,还要去学 webpack、npm、node (环境),等一推东西。非常的 boring。 不如 jQuery 来的实在,引入了 cdn,拿起键盘就是干
    exonuclease
        19
    exonuclease  
       2018-01-13 17:29:56 +08:00 via Android   ❤️ 1
    笑看一群吹 jq 的 活动页写傻了这是?
    去拿 jq 撸复杂 spa 试试
    mb135
        20
    mb135  
       2018-01-13 17:40:04 +08:00 via Android   ❤️ 6
    ls 某些低端培训码畜不要用自己在外包公司的悲惨经历去揣测别人,不是所有用 jq 的都是页面仔
    arraysnow
        21
    arraysnow  
       2018-01-13 18:00:21 +08:00
    @mb135 什么时候 jq “改写了 web 的历史进程”了?有相关文献吗,我张张见识···
    svenz
        22
    svenz  
       2018-01-13 18:08:08 +08:00
    @mb135
    1 首先不可否认 jq 的代码艺术价值 优雅的链式调用 无参构造确实非常的漂亮
    2 jquery 的最大存在价值是优雅的处理了浏览器的前端兼容性 但是随着规范化 十年后 jq 价值确实不大 艺术价值更多
    例如 H5 的 querySelector 和 querySelectorall 的存在 已经把使用 jq 的百分之五十的需求替代掉了.
    3 vue react ag 的出现事实上是比 jq 先进,主要解决的问题还是前端的状态问题降低了开发成本,用网红来形容不太恰当.
    4 同意你一点,不是所有的 jq 都是页面仔,但是想在大项目里面写好 jq(直接操作 dom)非常难,虚拟 dom 要比直接操作 dom 减轻了非常多的压力,页面仔是 hold 不住 jq 的大型的 jquery 项目的


    最后完全可以共存看项目性质,如果是一个简单的针对移动端的页面甚至 jquery 也不需要 h5 的 dom API 已经完全足够了
    uestc
        23
    uestc  
       2018-01-13 18:10:54 +08:00 via Android
    内部系统的话随便找个后端拿 jq 就可以开撸,vue 的话还是要学个几天才能开工
    ThomasChan
        24
    ThomasChan  
       2018-01-13 18:15:37 +08:00
    刚翻译了一篇关于这些框架的文章,楼主可以看看 https://zhuanlan.zhihu.com/p/32910275 他们的生命周期,共存是可以的,但是只会增加复杂度,不同的框架解决不同的痛点,要先知道自己想做的东西的恢复砸到什么程度,可能会遇到什么样的问题,再选框架
    fy
        25
    fy  
       2018-01-13 18:24:20 +08:00   ❤️ 1
    1. 可以共存,需要配置一下

    2. 随着对 mvvm 框架的逐渐熟悉,自然而然的就不再需要 jQuery 了。

    3. @slgz #18 不需要学这些。你只需抄起 cli (比如 vue-cli )自动生成初始项目,npm install && npm run dev 就可以开搞了。

    4. 就算不上全家桶,直接从 cdn 也可以单独引入 vue.js ,并以传统的方式来使用。数据绑定是很好的特性,即使如此也很有用。

    5. cli 弄来的全家桶是全方位的革新,这代表着 前后端分离 + 资源自动打包 + mvvm + es6 等一系列内容的引入,很多东西都是我们以前梦寐以求的,比如说自动合并 js、css 并将其压缩(很早以前用单独的脚本来实现,只能说勉强工作);比如说写标准 css,自动适配多个浏览器(自动加入 -webkit- -ms- -moz- 前缀); es6 带来的更是全方位的提升,再也不必像以前那样倒腾 coffeescript 之类了。

    6. 最后建议动手试一试,前端学习成本并不高。
    libook
        26
    libook  
       2018-01-13 18:50:18 +08:00   ❤️ 1
    如果说是框架的话,就看对框架的定义是什么了。
    个人认为:
    vue 是框架,配套的是特有的对 WEB 系统的抽象以及一系列搭建 WEB 系统的思想和方法论;
    jQuery 是库,提供了方便处理 DOM、方便调用常规算法的工具。

    理论上来说,一个项目既可以用 jQuery 来写,也可以用 vue 来写,也可以什么都不用原生 JS 来写,只不过针对不同项目的情况,各自的实现成本不同,而这种成本并不是绝对的。

    两者的功能既有交集,又有各自特有的,看具体的项目需求和采用的架构思想,决定究竟适合使用什么技术乃至如何搭配。
    notreami
        27
    notreami  
       2018-01-13 22:51:18 +08:00   ❤️ 1
    居然不是从行业、场景出发去选择框架,而是先去选择框架,再来适应行业、场景,真是神奇啊~~
    changwei
        28
    changwei  
       2018-01-14 00:42:11 +08:00 via Android
    如果你是后端开发人员,我可以打个比方,jq 就是手写 sql,vue.js 就是用了 orm
    exonuclease
        29
    exonuclease  
       2018-01-14 01:32:53 +08:00 via Android
    @mb135 不好意思我奶茶家的。某些低端培训码畜不要用自己在外包公司的悲惨经历去揣测别人,用 jq 的十有八九都是苦逼页面仔,能用 jq 撸 spa 的人不会傻到这么干的。
    mb135
        30
    mb135  
       2018-01-14 02:13:44 +08:00   ❤️ 2
    @exonuclease 爷我是腾讯家的出来炫耀过吗?我会说 QQ 邮箱现在还在用 iframe + jQuery 吗?没有任何应用一个 iframe + jQuery 解决不了,如果有,就用两个。

    我会说 spa 是邪路吗?不要说中小公司,就是大公司的应用也很少用 spa,github 几年前就尝试过 spa 了,现在不还是乖乖的换回后端渲染,只要浏览器还有地址栏,还有刷新功能,spa 就是邪路,就是噱头。
    mb135
        31
    mb135  
       2018-01-14 02:24:56 +08:00
    github 和国产的 gitee 都是用的传统的 jquery,国产的 coding 用了 angular,大家可以体验一下哪个用起来舒服,coding 也不是用的纯 spa,傻子才用纯 spa,只是用 angular 实现了一些切换效果,那些效果用 jquery 完全可以做出来。
    mb135
        32
    mb135  
       2018-01-14 04:22:04 +08:00 via Android
    spa 永远模拟不出来后端渲染的那种拳拳入肉的体验。后端渲染的页面点击的时候像是直接在墙上作画,spa 操作起来像是在墙上铺了纸(铺的很不贴实),在纸上作画
    akinoniku
        33
    akinoniku  
       2018-01-14 05:35:16 +08:00
    @mb135

    C++ 哪点比 PHP 弱?但要做网站还是有不少人选 PHP,毕竟成本摆在那里。

    理智一点啦,还什么拳拳入肉。
    zpvip
        34
    zpvip  
       2018-01-14 05:38:24 +08:00
    rogwan
        35
    rogwan  
       2018-01-14 07:43:09 +08:00 via Android
    虚拟 dom 用起来,页面渲染总有一种微微喝醉酒的感觉
    dan2001go
        36
    dan2001go  
       2018-01-14 11:03:34 +08:00
    @zpvip @mb135
    https://zhuanlan.zhihu.com/p/22782487

    这篇文章扎心了。话说自己从最早原生(那时候还没 jQuery )开始写起。后来用了 jQ。
    现在是完全看不懂了。。怎么写一个前端代码要这么多花头。。

    不过我的业务场景大多还是传统的页面渲染为主的那种。如果出去面试,说主要用 jQuery,大概率会被直接干掉的 T_T
    SourceMan
        37
    SourceMan  
       2018-01-14 11:14:25 +08:00 via iPhone
    看到了楼上某些可能老前辈守旧的姿态,感觉很可笑
    哦哦,可能也是连 vuejs 都学不好的人,只会 jq,所以特别恼怒现在哪里都用 react,vuejs,ng,jq 被慢慢淡忘
    janus77
        38
    janus77  
       2018-01-14 11:43:24 +08:00
    相当于后端同时使用 mysql 和 oracle 的关系
    abcbuzhiming
        39
    abcbuzhiming  
       2018-01-14 12:53:37 +08:00
    @changwei 先不谈前端,手写 sql 怎么了,目前国内凡是要和钱打交道的领域基本去 ORM 化了,mybatis 在国内可是远比 hibernate 流行的多的
    abcbuzhiming
        40
    abcbuzhiming  
       2018-01-14 12:56:05 +08:00
    @mb135 SPA 到底存在什么问题,能说具体一点吗
    SuperMild
        41
    SuperMild  
       2018-01-14 13:13:40 +08:00
    上面说 SPA 不能拳拳入肉、或像微微喝醉酒,我很怀疑是不是被渐变动画过程影响了感觉,如果去掉全部过渡动画,SPA 也是瞬间变化的,而且通常比页面刷新变得更快,正是由于变化太快,页面又不刷新,所以通常会加个渐变过程让用户感觉变化不显突兀。
    lalalakakaka
        42
    lalalakakaka  
       2018-01-14 13:29:03 +08:00   ❤️ 1
    我大概理解诸位大佬们的分歧点在哪里了。
    正方:
    目前前端页面发展越来越复杂,尤其是 SPA 的流行,必然要求前端技术向虚拟 DOM 操作框架推进。所以要有 vue,react 等等~

    反方:
    可是并不是所有的页面都是这么复杂啊,html 本身就是个极简单的东西(后端曰:不就是拼字符串嘛)。很多时候我们只是做个 CRUD 就 OK 了,哪有那么多复杂需求。而且功能强如 qqmail,技术强大如 github 都在用 jQ。你做个博客页还用 vuejs 什么的岂不是伪需求?
    exonuclease
        43
    exonuclease  
       2018-01-14 13:29:38 +08:00 via Android
    我炫耀啥了这不你先攻击我外包公司的么?哦原来 qq 邮箱是 jq 写的啊 怪不得那么难用 隔壁 gmail 老早 spa 了
    @mb135
    exonuclease
        44
    exonuclease  
       2018-01-14 13:35:27 +08:00 via Android
    麻烦各位 jq 的支持者 自己去招聘网站看看 jd 要求会 jq 的多还是三大框架的多 大家都是傻子?
    另外 其实我是写 node 后端的我跑来掺和这事干嘛
    sangmong
        45
    sangmong  
       2018-01-14 13:54:24 +08:00
    前排吃瓜
    assad
        46
    assad  
       2018-01-14 14:10:51 +08:00 via Android
    @exonuclease 放弃你的 node 吧,赶紧用 JAVA。
    ziki
        47
    ziki  
       2018-01-14 15:00:48 +08:00
    比较两个事物都分析各自优缺点,针对场景去选择,为什么一定要一方碾压一方的结果呢?
    codermagefox
        48
    codermagefox  
       2018-01-14 15:37:36 +08:00
    我只想说,要是后端看到这个帖子又要说:"你看看这群前端啊,唉,我就说嘛..."
    dan2001go
        49
    dan2001go  
       2018-01-14 16:05:39 +08:00 via Android
    @codermagefox 哈哈,后端能好到哪里去啊。前端这叫内战,无非就是围绕着 JavaScript 然后吵来吵去。

    后端那就是世界大战了,比如吼一句那个经典的台词『 PHP 是是世界上最好的语言!』
    codermagefox
        50
    codermagefox  
       2018-01-14 16:06:28 +08:00
    @dan2001go #49 然而 PHP 就是世界上最好的语言啊
    ZSeptember
        51
    ZSeptember  
       2018-01-14 16:11:32 +08:00 via Android
    看场景使用。所以是并存的吧。现在的话,一般对外的产品应该用后端渲染的多,对内的管理系统应该很多都开始用 spa 了。
    changlers
        52
    changlers  
       2018-01-14 18:39:45 +08:00
    jq 其实当成原声 js 的增强库用,mvvm 有自己的一套思想,原生 js 写的好什么用什么都行框架主要还是更专注,现在的年轻人啊,不要听的风是的雨,也要有自己的判断
    changlers
        53
    changlers  
       2018-01-14 18:40:57 +08:00
    框架更专注思想,怎么限制代码,让团队合作起来更方便更有效率
    gowk
        54
    gowk  
       2018-01-14 20:07:04 +08:00 via Android
    科科,钓鱼贴
    Tuisku
        55
    Tuisku  
       2018-01-14 21:19:27 +08:00
    我司用 React, 所以我也要用 React
    但我其实只是相当一个"页面仔", 而且我一后端容易吗我 233
    Tuisku
        56
    Tuisku  
       2018-01-14 21:19:50 +08:00
    @Tuisku #55
    相当 => 想当 mmp
    Pastsong
        57
    Pastsong  
       2018-01-15 01:38:18 +08:00
    @mb135 hhhh, b 了
    ericgui
        58
    ericgui  
    OP
       2018-01-15 04:03:44 +08:00
    @gowk 不是钓鱼贴。

    我在写一个小网站,有几个页面用 jQuery 感觉很方便,但有一个页面,似乎用 Vue 的数据映射更好,因为数据要重复利用。用在一个页面的好几个地方。

    所以才有此问。
    gowk
        59
    gowk  
       2018-01-15 05:52:07 +08:00 via Android
    @ericgui 惊了?还没睡?保重身体吧
    ericgui
        60
    ericgui  
    OP
       2018-01-15 05:55:14 +08:00
    @gowk 哥在美国,现在是白天。
    Mutoo
        61
    Mutoo  
       2018-01-15 06:32:12 +08:00
    可以共存的,vue 提供了组件生命周期的 hooks 可以在 mounted 的时候引入各种 jquery 插件 /事件的初始化,以及在 beforeDestroy 解构各种组件 /事件

    https://vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks
    DOLLOR
        62
    DOLLOR  
       2018-01-15 09:06:30 +08:00
    这个年代已经可以抛弃 jq 了,因为能用 vanilla.js 做的事,为何还要多此一举用 jq 呢?
    overflowHidden
        63
    overflowHidden  
       2018-01-15 10:04:04 +08:00
    @exonuclease 不要无脑吹 spa 了。spa 解决的无非是用户体验,实际开发坑有多少就不说了。这年头不是啥都是 spa 的。现在阿里都不能保证完全去掉 jq,更何况你区区奶茶东了。
    Plsea
        64
    Plsea  
       2018-01-15 15:02:25 +08:00
    又到了我第五喜欢的前端撕 X 环节
    KuroNekoFan
        65
    KuroNekoFan  
       2018-01-15 18:03:17 +08:00
    @overflowHidden spa 那不叫坑那叫新挑战,传统页面跳转一跳,旧的状态前端完全不用管,spa 的形态下状态变化全部前端维护,难度(坑)比传统页面跳转大很多不是必然的吗?
    guomuzz
        66
    guomuzz  
       2018-01-16 18:40:21 +08:00
    vue react ag 这种只关心数据了 需要什么 dom 组件 搞好放在那就行了 数据变 dom 自己就变了 不用太关心 dom
    jq 就是手动撸 dom 你如果数据没多大变化想用 jq 就用呗 哪个合适用哪个 喜欢哪个用哪个 不知道喜欢哪个就两都用一遍再决定 多体验一种技术 以后也能吹逼了 不能学小马过河啊
    ericgui
        67
    ericgui  
    OP
       2018-01-17 04:00:01 +08:00
    @guomuzz 谢谢大佬。我思来想去半天,还是暂时不用 vue,项目需要抓紧上线,还要学 vue,有点来不及:)
    wanguorui123
        68
    wanguorui123  
       2018-01-25 16:59:36 +08:00
    JQuery 是苍蝇拍,Vue 是大炮。苍蝇拍打苍蝇很方便,但是大炮缺不见得。这就是各自用武之地;

    至于 JQuery 的话主要辅助为主,填补浏览器标准(兼容性)的不住之处,如果浏览器标准完善后,JQuery 还需不需要很难说;
    Vue 等前端 UI 库,更像是填补 UI 交互上,繁琐的 DOM 操作的缺陷;
    如果 JQuery 做些简单的 DOM 操作和非 UI 层操作,没必要用 Vue 等 UI 库。
    Vue 等 UI 库,在做复杂的 UI 时候很专注,而 JQuery 不能很好的解决复杂 UI 的问题。
    wanguorui123
        69
    wanguorui123  
       2018-01-25 17:21:17 +08:00
    同时,Vue 等前端生态链,让人们明白,前端应该需要规范了!!!
    shintendo
        70
    shintendo  
       2019-04-05 21:17:01 +08:00
    我支持四个空格,花括号不换行
    charlie21
        71
    charlie21  
       2020-11-18 14:19:05 +08:00
    产品经理懂点技术:前后端是如何“分家”的?
前端服务器是运行原理


    http://www.woshipm.com/pmd/3342034.html












    charlie21
        72
    charlie21  
       2020-11-18 22:46:15 +08:00
    React.js 的介绍 - 针对了解 jQuery 的工程师
    https://segmentfault.com/a/1190000003501752
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1007 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 21:29 · PVG 05:29 · LAX 13:29 · JFK 16:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.