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

Vue 或者其他 MVVM 框架相较于 jQuery 的特性、优势在哪?(非抬杠,开放问题)

  •  
  •   Corbusier · 2018-03-28 12:02:48 +08:00 · 5623 次点击
    这是一个创建于 2436 天前的主题,其中的信息可能已经有所发展或是发生改变。

    两种都用过,但是只是 api 型...感觉还是没有领会到精髓,虽然能体会到它们是不一样的,但是又难以用归纳性的语言表达出来。

    32 条回复    2018-03-29 06:05:24 +08:00
    msg7086
        1
    msg7086  
       2018-03-28 12:11:48 +08:00   ❤️ 1
    就不是一类东西吧。
    MVVM 是用来做数据绑定的,jQuery 相当于一个超级甜的函数糖。
    本来 jQuery 和 MVVM 框架也是可以一起用的,完全不冲突。
    msg7086
        2
    msg7086  
       2018-03-28 12:13:01 +08:00
    说得不太准确,数据绑定只是其中一个功能,还有包括页面路由动态渲染等等各种功能。
    如果你自己用 jQuery 硬做一套这些功能出来的话,其实就相当于重新造了一套 MVVM。
    hAt
        3
    hAt  
       2018-03-28 12:32:32 +08:00
    jQuery 简化了 dom 操作,我理解增强了浏览器端的 js 功能,本身还是基于原生的 js,html 和 css 构建应用
    MVVM 既然是框架,我理解抽象了一直以来的开发模式,用新的方式构建应用,由之前的用 js 操作 dom 变成了用 js 操作数据,dom 的渲染由框架来完成
    feverzsj
        4
    feverzsj  
       2018-03-28 12:36:23 +08:00
    MVVM 开销大,一般简单的 ui 用 jquery 会更快
    lovedebug
        5
    lovedebug  
       2018-03-28 12:36:55 +08:00
    一个是框架,一个是一系列的库。
    shiji
        6
    shiji  
       2018-03-28 12:40:00 +08:00 via Android
    这两个东西不一样,所以没什么需要比的。 我有的时候会一起用(捂脸)
    tjsdtc
        7
    tjsdtc  
       2018-03-28 13:05:44 +08:00
    个人的一些经验:MVVM 是数据驱动的开发,也就是说编码的过程中只需要关注数据层的业务逻辑,而无需关注视图层的更新,一般来讲逻辑越是复杂的页面用 MVVM 框架开发相比较传统的 DOM 操作的模式来说代码的逻辑更加清晰,代码量更少,代码风格也更统一。
    fanhaipeng0403
        8
    fanhaipeng0403  
       2018-03-28 13:07:53 +08:00
    一个是框架 , 一个是 DOM 库
    z530151716
        9
    z530151716  
       2018-03-28 13:09:10 +08:00
    一个是 SpringMVC 一个是工具类集合 不知我的理解对不对
    doubleflower
        10
    doubleflower  
       2018-03-28 13:29:21 +08:00
    你没有意识到 Vue 比 JQ 进步在哪,说明你的应用很简单没什么动态部分,那用用 JQ 也没什么。
    SuperMild
        11
    SuperMild  
       2018-03-28 13:31:32 +08:00
    1. 简化了一些常用的任务。比如 Vue 可以方便地做一个组件出来,用 jq 当然也可以做到类似的组件,但是麻烦呀。

    2. 规范了套路。比如组件怎么写,规定好了,大家写法统一。用 jq 实现同一个组件有一万种实现方法,每个人写法不一样,团队合作就很烦了。当然你可以规定一套规范,然后你要写一大堆文档说明这个规范的用法(想想就想死),Vue 给你规范好了中英文档都给你写好了,何苦自己再搞一套。
    xomix
        12
    xomix  
       2018-03-28 13:33:40 +08:00
    流水线比较一般工具套装的特性、优势在哪?(非抬杠,把你的问题套到更容易理解的角度)

    这样看你就知道了吧,你流水线上一样要用一般工具( MVVM 框架一样要用 jQuery ),流水线上可能配置了部分工具(小部分功能不用 jQuery 可以),但是这俩东西没啥可比性。

    如果你是很小的一件事换个灯泡这种,当然用一般工具套装(微型应用 jQuery 的解决方案优于各种框架),甚至不用也不错(原生 js 也可以)。
    如果你要解决的问题是大规模性的长期的问题,当然要上流水线(大型项目用 MVVM ),但是工具套装也能生产一些简单的微型流水线解决问题(小规模的长期工作较也可以用 jQuery 做点东西凑合)。
    whypool
        13
    whypool  
       2018-03-28 13:38:01 +08:00
    没对比可言
    在 mvvm 中也可以用 jq
    Biwood
        14
    Biwood  
       2018-03-28 13:41:51 +08:00
    简单点:
    Vue 靠数据的改变来驱动页面的变化,出发点在数据。
    jQuery 靠操作 DOM 结构来改变页面,出发点在 DOM。
    learnshare
        15
    learnshare  
       2018-03-28 13:42:05 +08:00
    自行车 /火车
    精于解决小问题 /适合解决大问题
    zhchyu999
        16
    zhchyu999  
       2018-03-28 13:43:12 +08:00 via Android
    MVVM 方便了前端工程化,比普通写页面的多了一个吹牛逼的点,但真正需要工程化来解决的并不太多
    vinsony
        17
    vinsony  
       2018-03-28 14:06:26 +08:00
    感受不到区别证明你的页面还不够复杂
    murmur
        18
    murmur  
       2018-03-28 14:07:06 +08:00
    mvvm 在不需要性能前提下
    写 交互验证复杂的页面爽的一批
    grewer
        19
    grewer  
       2018-03-28 14:08:09 +08:00
    组件化吧,以前做的时候,组件都是后端搞的然后模板里 include 就行了, 现在改到了 js 里引用了,再加上配套地控制路由(jq 也能控制,但是没有搭配),功能多了, 其他数据的着力点不一样,但还是大同小异
    vincenttone
        20
    vincenttone  
       2018-03-28 14:20:57 +08:00
    个人理解:
    其实从解决问题的方向上来讲,一样也不一样,一样是都想降低代码开发的复杂度,不一样的是实现机制。
    如果不想了解那么多,个人觉得 jquery 多数场景适合,但是大型项目上 mvvm 更容易降低项目复杂度(同时有较大可能性带来性能损耗)。
    jquery 更加类似于复杂度的简易封装,如果都是使用全部特性的情况下,代码的自由度实际上 jquery 是没什么限制,大型项目上,还是看写码的人。
    qa2080639
        21
    qa2080639  
       2018-03-28 14:23:24 +08:00
    数据交互多的时候 你用 jQuery 写完再用 Vue 这类写就知道了
    jimi2018
        22
    jimi2018  
       2018-03-28 14:24:57 +08:00
    我觉得本质上是为了省事,而出现的。侧重点不同,解决的需求也不一样,就和汽车和自行车一个意思,都能到达目的地,但是是不同的工具,不知道是否露怯了。

    如果对 vue 还是没彻底吃透,建议看看这个《 Vue.js 2 的全家桶系列教程》:

    1.vue.js 2 入门与提高 http://xc.hubwiz.com/course/592ee9b2b343f27b0ae1ba99?affid=20180328v2ex
    2.vuex 2 入门与提高 http://xc.hubwiz.com/course/597d463fff52d0da7e3e397a?affid=20180328v2ex
    3.vue-router 2 入门与提高 http://xc.hubwiz.com/course/5983d3aeff52d0da7e3e3d50?affid=20180328v2ex
    4.vue.js 工程化实践 http://xc.hubwiz.com/course/598bad66c7fd1d49453979c9?affid=20180328v2ex
    zjsxwc
        23
    zjsxwc  
       2018-03-28 15:08:42 +08:00 via Android
    打个比方。

    html 是纸

    jquery 是铅笔与橡皮

    mvvm 框架是 3dm 软件与打印机
    SourceMan
        24
    SourceMan  
       2018-03-28 15:11:11 +08:00
    vue、react 你不可以混搭用
    vue、jquery + react、jquery 你可以混搭用

    怎么能比较呢。
    zjsxwc
        25
    zjsxwc  
       2018-03-28 15:19:08 +08:00 via Android
    单纯 jQuery 的时候,dom 操作之间没有直接的业务关联,dom 操作只是 dom 操作,dom 操作之间没有逻辑关系。

    mvvm 框架的数据绑定让 dom 操作之间出现了逻辑关联,于是我们写代码只要理清楚 vm 之间的关系就行,而不需要像用 jQuery 时那样,在理解业务后还需要处理 dom 之间如何一起更新,一旦业务有新改动出现又是一堆伤筋动骨的 dom 操作。

    说白了,和变成语言的工程化发展很类似,早期过程式语言,数据只是数据,不包括业务,然后面相对象语言出现了,我们只需要讨论对象关系就行,而不讨论数据,因为对象包含了数据,而对象的方法也包含了业务逻辑,于是减少了开发时的心智负担。
    lianyue
        26
    lianyue  
       2018-03-28 15:23:45 +08:00
    jq 只是让 dom 操作更方便
    MVVM 减少大部分手动 dom 操作(简单的还可以不用手动 操作 dom ) 直接修改数据就可以了
    Sapp
        27
    Sapp  
       2018-03-28 15:35:54 +08:00
    没意识到优势在哪说明要么没用过,要么做的东西太简单(数据变动方面),或者是偏向自定义 DOM 操作,根本用不上 MVVM。

    @SuperMild 组件和你用什么框架 /库没关系,你就用 jq 照样可以做组件(模版),或者想 bootstrap 那样,只不过 MVVM/MVC 让组件化更流行而已,简单不简单也不是针对组件,Vue 的组件一定写起来比 JQ 简单?这是 MVVM 的优势,并不是用 MVVM 组件化的优势。而且组件的可用性和你用什么框架也没太大关系,比如你说的规范了套路,JQ 难道不能规范套路? Vue 就一定要规范套路?这显然不是,组件是否规范和开发人员有关系,和用什么并没关系。
    shangshicc
        28
    shangshicc  
       2018-03-28 15:48:25 +08:00
    MVVM 是架构,jQuery 是库
    SuperMild
        29
    SuperMild  
       2018-03-28 15:54:46 +08:00
    不能说极端的情况,要说普遍情况才有意义,既然用了 Vue,肯定大部分符合 Vue 的规范,小部分因特殊需要 hack 一下。明明用了 Vue 却偏偏不按它那一套来,大家各自魔改一番,这样做当然可以,但举这种例子就没意思了。

    “ JQ 难道不能规范套路”, 当然可以,但是写文档很烦啊。
    Debiancc
        30
    Debiancc  
       2018-03-28 16:02:11 +08:00
    月经贴
    软件工程里面有一个很重要的概念是要尽量降低软件复杂度
    这个可以从产品角度去看,也可以从工程角度去看
    jQuery 只是一个 library,library 的目的是提供类似 helper 的方法来提高你的开放效率
    Vue 是一个 framework,framework 则是提供一个类似最佳实践设计思想的 library,告诉你的代码该怎么组织抽象 隔离 测试 甚至部署,一切井然有序

    你当然可以说 Vue 能写的 jQuery 都可以写
    但是实践告诉我们 在适合 Vue 场景下的代码
    jQuery 写出来的就是一坨屎
    DOLLOR
        31
    DOLLOR  
       2018-03-28 17:28:23 +08:00
    月经贴+1

    视图与模型解耦,业务与 UI 分离,方便后期维护。
    jQuery 不是做不到,而是难度比较大。特别是这个时代,有的人会写个 click 事件就自称“精通 web 开发”。如果没有好的框架来规范他们,后期维护就是各种灾难。
    klausgao
        32
    klausgao  
       2018-03-29 06:05:24 +08:00 via Android
    都 2018 年了还讨论这个。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2797 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 15:19 · PVG 23:19 · LAX 07:19 · JFK 10:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.