如果说选 Vue 的理由是简单易上手,那么选 React 的理由是什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luoway
V2EX    前端开发

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

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

    非引战。我关心的是应用场景问题,什么场景倾向 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 在语法层面的相似性高,因此更合适。
    shakaraka
        3
    shakaraka  
    PRO
       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 也许更适合复杂后台系统?
    AV1
        6
    AV1  
       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     Solana     2657 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 15:11 PVG 23:11 LAX 08:11 JFK 11:11
    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