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

如果说选 Vue 的理由是简单易上手,那么选 React 的理由是什么?

  •  2
     
  •   luoway · 2019-07-24 12:25:37 +08:00 · 7212 次点击
    这是一个创建于 1955 天前的主题,其中的信息可能已经有所发展或是发生改变。

    非引战。我关心的是应用场景问题,什么场景倾向 React,什么场景倾向 Vue ?

    65 条回复    2019-07-26 14:54:24 +08:00
    Hyvi
        1
    Hyvi  
       2019-07-24 12:27:13 +08:00 via Android
    找虐
    luoway
        2
    luoway  
    OP
       2019-07-24 12:28:18 +08:00
    我认为如果业务涉及各种小程序的话,Vue 更合适,因为小程序都抄的微信小程序,微信小程序又是类似 Vue SFC (单文件组件)的结构。Vue 在语法层面的相似性高,因此更合适。
    wunonglin
        3
    wunonglin  
       2019-07-24 12:36:40 +08:00
    要自虐学 angular,要简单学 vue,react 这东西实在想不出什么场景是非 react 不可的
    nwu2Cv8OZ2MZMg39
        4
    nwu2Cv8OZ2MZMg39  
       2019-07-24 12:40:02 +08:00
    好找工作
    luoway
        5
    luoway  
    OP
       2019-07-24 12:47:19 +08:00
    @VikingX #4 我就是看到某不知名公司招人( React 优先)有感而发的,站在公司角度决策,毫无疑问 Vue 好招人

    不过看了下这家公司业务范围,并不涉及移动端,所以 React/Vue 对其没有啥区别,React 也许更适合复杂后台系统?
    DOLLOR
        6
    DOLLOR  
       2019-07-24 12:52:03 +08:00 via iPhone
    大量表单可能双向绑定的 vue 更方便。

    这两个都很简单,当然 react 相对更简单,选谁都差不多。
    abcbuzhiming
        7
    abcbuzhiming  
       2019-07-24 12:54:47 +08:00
    @luoway 我觉得你想多了,很可能他们公司因为历史原因就是 React 占优势,所以招人自然走 React。好比后端有点年头的公司都招 java,比较年轻的公司喜欢 go,你觉得谁比谁好一些吗?
    真要说场景,React 诞生就是为了对付交互特别多的场合——非死不可家的社交。所以它的状态能力独树一帜,比较适合做 IM。angular 则是玩表单的。Vue 现在看是想法比较中庸的 MVVM 框架
    nyaapass
        8
    nyaapass  
       2019-07-24 13:01:15 +08:00 via iPhone
    在 vue3 出来之前,react 对 typescript 的支持更好
    SilentDepth
        9
    SilentDepth  
       2019-07-24 13:08:50 +08:00
    早些时候选择的 React 的理由很简单:背景是一个大型商业公司。当然简单也是一个重要因素(相对 Angular 而言)。

    后来的理由就是市场了,也就是好不好找工作 /人。
    Danswerme
        10
    Danswerme  
       2019-07-24 13:10:47 +08:00 via Android
    有大公司背书
    nwu2Cv8OZ2MZMg39
        11
    nwu2Cv8OZ2MZMg39  
       2019-07-24 13:14:18 +08:00 via Android
    @luoway 有些公司就是对 React 情有独钟,掌握两个框架可以让我的选择面广一些,我是这样想的。
    nwu2Cv8OZ2MZMg39
        12
    nwu2Cv8OZ2MZMg39  
       2019-07-24 13:17:55 +08:00 via Android
    @luoway 选什么框架更多时候是由团队决定的而不是个人
    luoway
        13
    luoway  
    OP
       2019-07-24 13:21:38 +08:00
    @abcbuzhiming #7 那家历史就 2 年。
    “交互多”确实是个 Vue 不方便处理的地方,vue 在写条件渲染时,条件处理写在 script 里,渲染结果写在 template 里,相关代码相隔有点远,不如 React 在条件分支中返回模版简洁。
    但是换一种“数据驱动视图”思路,先把视图写好,按数据渲染,也清晰明了。
    状态管理我感觉确实 React 确实更好,Vue 为了使用方便,保持同步 setState,同时增加使用限制,如不能 set props,开发中经常有“此路不通,请绕道”的感受
    luoway
        14
    luoway  
    OP
       2019-07-24 13:28:10 +08:00
    @VikingX #12 所以想知道团队是怎么决定的。想当年我们团队决定用 Vue,就是因为对大多数前端友好易上手。
    luoway
        15
    luoway  
    OP
       2019-07-24 13:33:58 +08:00
    @SilentDepth #9
    @Danswerme #10
    大公司背书,emmm,尤雨溪就一个人 /小团队。
    Vue 确实偶尔一些版本里会有临界情形 bug 出现。
    nwu2Cv8OZ2MZMg39
        16
    nwu2Cv8OZ2MZMg39  
       2019-07-24 13:34:53 +08:00   ❤️ 2
    @luoway 招聘要求 React,很多时候是为了避免“坑”,毕竟现在培训出来的,人人都会 Vue。就我们公司来说,一是团队负责人讨厌 Vue,二来我们要上 TS,三是前端团队都写过 React ;自然也就选 React 了。
    SilentDepth
        17
    SilentDepth  
       2019-07-24 13:49:25 +08:00
    @luoway #15 其实背后是不是一个团队倒在其次,关键是看这个框架的维护是否有稳定的物质支持。毕竟人都是要吃饭的,用爱也许可以发电,但毕竟不能当饭吃。比如 core-js,万一哪天作者撂挑子或被迫撂挑子了,而你的业务重度依赖它,尴尬不尴尬?这也是为什么 Vue 早期很有讨论度,但公司产品层面接受度不高的原因——人家凭什么相信 Vue 能稳定支撑公司业务发展?

    技术层面上,Vue 和 React 现在没什么秒杀彼此的区别,至多也就是一种倾向、习惯的事儿。团队成长上,双方都有不少浑水摸鱼的,就看团队在哪个框架上更有去伪存真的能力。
    ylsc633
        18
    ylsc633  
       2019-07-24 13:55:27 +08:00
    antd 比 elementUI 好看..

    vue 的 antd 版本 好像是不久前合进来的..

    iview 把 vue 封装的有点过..

    反正无所谓 毕竟我又不是前端
    leojoy710
        19
    leojoy710  
       2019-07-24 13:57:44 +08:00
    因为 React 推动创新, 去看看最近的 React 吧, 已经上线的 Fiber, Hooks, 还有正在做的 Concurrent Mode, Flare, 都是非常有意义的创新.
    luoway
        20
    luoway  
    OP
       2019-07-24 14:00:30 +08:00
    @SilentDepth #17 前端框架层出不穷,是否稳定其实是持开放态度的,比如 Flutter,可预见的未来都不支持热更新,也不影响闲鱼拿它在生产环境使用,比如 weex,迭代缓慢,偶尔传言不维护,但却是 Vue 派最有效的跨端解决方案。
    SilentDepth
        21
    SilentDepth  
       2019-07-24 14:13:42 +08:00
    @luoway #20 作为开发人员,尝新、造轮子都是天性,或许不觉得一个工具、框架不稳定是大事。「又不是不能用」,对吧?但商业层面不是这么考虑的,不然不会有那么多主打隔离、锁定依赖的运维、部署方案了。Ant Design 的「下雪事件」,对开发人员算个事儿吗?不就是多了个背景图嘛,没影响内容没影响交互更没影响业务,甚至不用干预过一天自己就好了——但老板们也是这么想的吗?

    Flutter 也好,Weex 也罢,总会有人用的,这也侧面证明社区对这些技术方案的肯定。但不算闲鱼、手淘,市面上还有多少公司在 production 或主营业务使用了这些方案呢?阿里敢用,是他们有遇到问题正面刚的底气,这个底气来自阿里累计多年的企业资源——而这世界能有几个阿里?

    决定技术决策的,往往不是技术因素。

    PS: 相比较 Weex,我更看好 NativeScript (
    luoway
        22
    luoway  
    OP
       2019-07-24 14:36:12 +08:00
    @SilentDepth #21 React 一直在创新,按你说的决策因素,结果往往就是上 Angular 了,毕竟老牌,大公司都在用。
    但实际上,小公司更关心成本,这也是明明 Java 一统后端,PHP、Python、Go、Node 却更受小公司亲睐的原因。
    murmur
        23
    murmur  
       2019-07-24 14:43:41 +08:00
    因为 react native
    murmur
        24
    murmur  
       2019-07-24 14:44:36 +08:00
    @luoway 闲鱼只用了几个页面他就开始吹用 而且闲鱼不需要热更啊 别人直接上市场的东西可以频繁更新 企业应用对热更非常大 因为不上市场
    SilentDepth
        25
    SilentDepth  
       2019-07-24 14:57:39 +08:00
    @luoway #22 我说的「稳定」不是说没有新特性了,而是「遇到问题有人管」。假如尤大「迫于生计」找了份 996 的工作,每天一睁眼不是老版的 deadline 就是孩子的学费,哪儿还有心情处理 Vue 的 issue 呢?从这个角度说,React 和 Angular 都不错,但二者的上手门槛显然是不同的,这个时候公司就得考虑招聘和用人成本的问题了。大公司要考虑,小公司尤甚。
    visonme
        26
    visonme  
       2019-07-24 14:59:54 +08:00
    有点难,从我们团队来说,真没有考虑过这个问题,就目前我们的产品来说 vue/react 都能很好的解决,而且没有碰到太多的困难,在这种情况下,确实很难说那个适用那个场景。因为早期接触 react,所以团队这块积累多点,所以一致桌面产品+移动 web 使用 react,国内小程序类应用目前采用 vue,部分产品的移动 web 基于 vue。

    react 到 vue 问题并不大,也没有什么需要特别客服的困难,所以我们基本看那个好用,能个能快点让我们解决产品问题,我们就用那个,管它啥子场景呢,小微企业哪里要考虑那么多。
    reus
        27
    reus  
       2019-07-24 15:43:10 +08:00   ❤️ 1
    vue3 都开始抄 react 了,还有啥好讨论的
    vue3 那么像 react,那我直接用 react 不就得了
    love
        28
    love  
       2019-07-24 15:51:15 +08:00
    @reus 抄个鸟,还是响应式的核。另外因为不同于 react 纯函数方式,vue 版 hooks 实现比 react 版更好用了
    loading
        29
    loading  
       2019-07-24 15:53:12 +08:00 via Android
    @love vue2 和 vue3 好迁移吗,我才开始学 vue2
    love
        30
    love  
       2019-07-24 16:00:05 +08:00   ❤️ 2
    @loading 一直是 react 党,还没用过 vue 呢(不太喜欢 vue 2 的编程方式)。只不过是这次见 vue 版的 hooks 设计不错以后想试试
    reus
        31
    reus  
       2019-07-24 16:01:54 +08:00
    @love 你也知道说“ vue 版的 hooks ”,hooks 难道不是 react 先实现的?

    响应式是抄 angular 的,我还没说呢。
    murmur
        32
    murmur  
       2019-07-24 16:02:27 +08:00
    @reus 如果能把 react 做到 jquery 一样简单,还能保留 react 一半甚至更多得优点,甚至加入了 react 都没有得好东西,为啥不用 vue
    murmur
        33
    murmur  
       2019-07-24 16:03:11 +08:00
    @reus 开源一大抄,上一个 angular 喷 vue 得已经被 google 开除了
    reus
        34
    reus  
       2019-07-24 16:06:10 +08:00
    @murmur 你觉得 jquery 简单,那为啥不用 jquery,要用 vue ?

    按你的说法,优点没了一半,多出来的所谓“好东西”,就能弥补损失了?
    murmur
        35
    murmur  
       2019-07-24 16:07:23 +08:00
    这么说把,越偏向内容展示或者企业用的办公系统,vue 优势越大,因为有模板引擎友好度不说秒杀把,和 react 也就差了个 jquery 的距离
    越偏重 app 越偏向 sap 越考虑 react
    有情怀无脑选 react,毕竟洋人的东西自带情怀,vue 多少年因为出身被 diss 来 diss 去的
    murmur
        36
    murmur  
       2019-07-24 16:07:50 +08:00
    @reus 我不需要的特性损失不损失与我何关?大家都需要选型的,没什么损失
    reus
        37
    reus  
       2019-07-24 16:09:01 +08:00   ❤️ 5
    @murmur 呵呵,尤雨溪给 google 打小报告那次啊,真好意思提啊。尤雨溪推广 vue 时,可没少攻击 react 和 angular,换成别人攻击 vue 了,他就耍这种下作手段。

    说实话,尤雨溪的道德水准,也是我鄙视 vue 的原因之一。
    Rocka
        38
    Rocka  
       2019-07-24 16:12:28 +08:00   ❤️ 1
    @luoway #13 Vue 的条件处理也可以写在 template 里面 https://vuejs.org/v2/guide/conditional.html
    难道 Vue 不是 “数据驱动视图” 吗
    Vue 监听 data 或者 prop 的变动也是异步的,哪来的 “同步 setState ” 之说? https://vuejs.org/v2/guide/reactivity.html#Async-Update-Queue
    而且 React 组件的 props 也是不能修改的 https://reactjs.org/docs/components-and-props.html#props-are-read-only
    luoway
        39
    luoway  
    OP
       2019-07-24 16:53:27 +08:00
    @Rocka #38
    稍微复杂点的条件处理就不适合写在 template 里面,否则 template 冗长,会比 jsx 还难看。
    同步 setState 是相对于 React 异步说的,this.val = val 就完成了 setState,监听、props 变动是异步的。
    限制一样的话,那还是 Vue 好用啊
    luoway
        40
    luoway  
    OP
       2019-07-24 16:55:12 +08:00
    @reus #37 哈哈哈,瓜子板凳就绪,就喜欢看技术圈的非技术趣闻
    zwithz1998
        41
    zwithz1998  
       2019-07-24 17:02:21 +08:00 via iPhone
    @reus #37 对事不对人
    reus
        42
    reus  
       2019-07-24 18:08:46 +08:00
    @zwithz1998 我才不信奉你这种无聊的信条
    SilentDepth
        43
    SilentDepth  
       2019-07-24 18:13:02 +08:00   ❤️ 1
    @loading #29 按照目前已知的情况,迁移几乎零成本。如果考虑使用 Vue 3 兼容版(而不是只包含 Vue 3 推荐特性的「先锋版」),已有代码库无需做任何改动。不过如果是刚开始学习 Vue 的话,建议先过一遍 Vue 2 的文档,然后过一遍 Vue 3 RFC,优先学习 Vue 2 中没被 Vue 3 改动的特性,再学 Vue 3 的推荐特性,最后再学其他的。

    @reus #37 「造谣一张嘴」,望自重。
    chairuosen
        44
    chairuosen  
       2019-07-24 18:27:01 +08:00
    vue 做了很多隐式的处理,你无法修改。当你需要写一些写法奇怪的代码时,和这些隐藏的逻辑冲突了,就会出 BUG。
    react 把所有事情放在明面上,简陋也简单。所有流程节点都是可控的,出问题有把握能修。
    yl666
        45
    yl666  
       2019-07-24 18:44:05 +08:00
    对于我这个后端来说 react+飞冰=爽
    momocraft
        46
    momocraft  
       2019-07-24 18:49:10 +08:00   ❤️ 1
    上限高
    和 ts / ide 兼容好
    尬吹的队友少
    gouflv
        47
    gouflv  
       2019-07-24 21:39:22 +08:00 via iPhone
    小孩子才做选择
    reus
        48
    reus  
       2019-07-24 22:18:12 +08:00
    @SilentDepth 滚一边去吧您。
    q8164305
        49
    q8164305  
       2019-07-24 22:45:07 +08:00 via Android   ❤️ 1
    我一开始也写 vue,后面越来越喜欢 react,因为很纯粹,react 只是做了一件事,就是渲染,而没有做太多事,我觉得就够了,vue 封装了太多东西,复杂交互根本没法写
    beyond99
        50
    beyond99  
       2019-07-24 23:02:26 +08:00 via Android
    v 站真的很奇怪,我的几个号都因为不知道什么原因封了,可是楼里某个喷子 id 我已经眼熟了,还活的好好的
    fool079
        51
    fool079  
       2019-07-25 10:01:48 +08:00
    @chairuosen +1

    react 党。刚入职,团队用的 vue,然后感觉 vue 很多设计上的做法不太喜欢,甚至觉得有些奇怪。
    可能这样设计会更适合入门吧。。
    SilentDepth
        52
    SilentDepth  
       2019-07-25 10:05:32 +08:00
    @reus #48 如果你确实想讨论问题,请列举出能支持你在本主题所言观点的证据,证据有效我向你道歉。如果你无意讨论问题并且毫无道理地拒绝反驳,请闭嘴。
    reus
        53
    reus  
       2019-07-25 10:11:22 +08:00
    @SilentDepth 你一开口就是“「造谣一张嘴」,望自重”,为什么你会认为我想和你讨论问题?明明是你自己先人身攻击我,居然还有脸和我说“讨论问题”?!你说我造谣,列举证据的居然是我,而不是你?!

    走开,我不想继续和你这样的人进行任何交流。
    SilentDepth
        54
    SilentDepth  
       2019-07-25 10:31:41 +08:00
    @reus #53 「尤雨溪推广 vue 时,可没少攻击 react 和 angular,换成别人攻击 vue 了,他就耍这种下作手段。」如果你不认为这句话是造谣,请举证。
    luoway
        55
    luoway  
    OP
       2019-07-25 10:42:13 +08:00
    @q8164305 #49
    @fool079 #51
    确实,vue 封装了很多东西,单文件组件解决了组件如何管理的问题、css in js 无需多想,template 则是对 HTML 加强,组件方案近似 Web Component。这些都很符合传统前端的开发方式。
    React 的 all in js 风格,对于非传统前端来说更友好,虽然同样要学 HTML、CSS、JS 三件套,但是 JS 可以完全控制 HTML、CSS 部分,逻辑入口清晰。
    感觉 Vue 虽然轻量,但是加入了很多开发常见需求的解决方案,做到了开箱即用的便利性。React 则好像有很多解决方案,所以有“全家桶”的说法。二选一时,Vue 开箱即用能够吸引不少新人。
    hoshizukiko
        56
    hoshizukiko  
       2019-07-25 10:45:08 +08:00   ❤️ 1
    都在用,公司比较偏向 react 一些…… so,公司用啥我用啥。jq 都行。
    mingtianjiayou
        57
    mingtianjiayou  
       2019-07-25 10:59:37 +08:00
    react 有写代码的感觉,vue 写着没感觉,可能太简单了
    zhwithsweet
        58
    zhwithsweet  
       2019-07-25 11:04:54 +08:00
    @SilentDepth #47 你知道尤雨溪在前端圈多遭人“恨”,同样是做框架,为啥 yyx 就能成呢?🐶
    royzxq
        59
    royzxq  
       2019-07-25 11:08:27 +08:00
    目前,React 对 ts 的支持度比 vue 好太多
    demonzoo
        60
    demonzoo  
       2019-07-25 11:12:29 +08:00
    @Hyvi 为什么不找 angular 虐?
    murmur
        61
    murmur  
       2019-07-25 11:31:10 +08:00   ❤️ 1
    @zhwithsweet

    1、各种框架设计总考虑所谓 geek 的特性,但是 vue 是站在人性化的角度考虑
    2、vue 站在巨人的肩膀上,继承了各框架的有点
    3、vue 在宣传的时候大量使用了数据说话,你说我不行我给你性能比较,你说我一个人不靠谱我给你看 bug 修复速度
    4、市场需要,切图仔不需要高端特性,高阶组件可以没有,state 可以不要事件就行,但是模板引擎必须强大,react 这种 if 和 for 都得用语法糖的在切图仔眼里直接就是负分
    SilentDepth
        62
    SilentDepth  
       2019-07-25 11:34:45 +08:00
    @zhwithsweet #58 Angular 和 React 相比传统 Web 开发的变化是颠覆的,但 Vue 就提供了相对平滑的演进曲线,不「成」才怪。Vue 3 的曲线陡了一点,但依然可以几乎零成本地迁移已有代码库,不「成」才怪。
    SilentDepth
        63
    SilentDepth  
       2019-07-25 11:39:17 +08:00   ❤️ 1
    @murmur #61 说的在理。Angular 告诉你一个框架可以掌管整个工程,React 告诉你用 JS 函数就能实现灵活多变的视图,Vue 告诉你开发一个 Web App 可以很省心。
    Hyvi
        64
    Hyvi  
       2019-07-26 14:52:42 +08:00 via Android
    @demonzoo angular 虐不动
    Hyvi
        65
    Hyvi  
       2019-07-26 14:54:24 +08:00 via Android
    @demonzoo 虐完,也木有公司买单
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.