和 React 比起来 Vue.js 好用吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
doubleflower
V2EX    Javascript

和 React 比起来 Vue.js 好用吗?

  •  
  •   doubleflower 2016-04-12 09:48:09 +08:00 44803 次点击
    这是一个创建于 3471 天前的主题,其中的信息可能已经有所发展或是发生改变。

    打算新开一个个人项目,在 React 和 Vue 之间摇摆。

    我之前用过的技术包括 Backbone/Angular/React , Vue 只是大概扫下眼文档。

    • Backbone

    手工同步数据和页面真得好烦。

    • Angular 1.x

    很久之前用过快忘记是什么体验了,只记得有点重,组件化开发很弱。 Angular 2 看了眼介绍不是我的菜且体积巨大。

    • React

    用 React + Redux + ES 6 搞过一个项目,数据井井有条,架构比较清楚,配套也好(自动刷新不丢页面状态),只是有点繁琐。 Virtual DOM 的存在使得和真实 DOM 隔了一层有时很不方便,函数式的架构使得组件之间的通信也难处理。

    • Vue.js

    Vue.js 一眼看上去是实用风格,这框架我在用 React 之前就注意到了,只是当时一看是个国人作品就无视了,想不到突然就火起来了。 它比 React+Redux 轻量,内建组件间通信机制,支持组件,配套也不错该有的都有,看上去挺不错的样子,只是是个人项目,不过作者很勤奋所以这可能不是问题。且看作者的一些文字发现作者视野开阔不太会把 Vue 带沟里去偏离前端大势(参考前段时间很火的真阿当厮 b 大战)。

    66 条回复    2017-10-27 10:07:50 +08:00
    tao1991123
        1
    tao1991123  
       2016-04-12 09:55:43 +08:00
    vuejs 吹 赞一个
    stiekel
        2
    stiekel  
       2016-04-12 09:57:55 +08:00
    我是一直使用 AngularJS ,看了一下 React 和 Vue.js ,感觉 Vue.js 更容易上手,组件化没有 React 那么强,做个小应用还是不错的,最近做的一个微信应用,就是 Vue.js 。
    damngoto
        3
    damngoto  
       2016-04-12 10:06:26 +08:00
    React 至少还能火三年,在前端界这已经很牛逼了!
    NemoAlex
        4
    NemoAlex  
       2016-04-12 10:08:22 +08:00
    Vue.js 起步于小型应用,虽然目前已经有制作中大型应用的工具集( vue + webpack + vue-loader + vue-router + vuex? + es2015(babel)),但是仍然没有特别多的人这么用(跟 react 比起来)。
    我之前写了一个 aria2 的前端, https://github.com/NemoAlex/glutton ,采用了官方推荐的 webpack 结构,并没有用到 router 和 vuex ,感觉还算是容易。可以参考一下。
    poke707
        5
    poke707  
       2016-04-12 10:20:04 +08:00 via Android
    Vue 不算“国人作品”啊。
    我厂的项目从 0.11.x 左右开始选的 Vue.js 。现在觉得选这个真是合适,容易实现需求,可扩展性高,对团队来说重要的还是比 React 上手得快。
    不过我个人觉得 React 更好玩,但玩得少就不乱发现了。
    poke707
        6
    poke707  
       2016-04-12 10:21:00 +08:00 via Android
    @poke707 s/发现 /发言 /
    milklee
        7
    milklee  
       2016-04-12 10:29:49 +08:00
    Vue.js 用起来是真的很舒服。我有一个项目,用了 Vue.js + Webpack + vue-loader + vue-router + Vuex + es2015(babel),你可以感受下: https://github.com/lmk123/Runner
    robinlovemaggie
        8
    robinlovemaggie  
       2016-04-12 11:03:08 +08:00
    react 和 vue 目前的地位实不如 angular 和 ember 吧,说火起来的从何下此结论?
    Vamwere
        9
    Vamwere  
       2016-04-12 11:12:51 +08:00
    @robinlovemaggie react 地位肯定是最高的,太多商业公司(而且都是独角兽或者巨头)直接用在核心业务上的,不像其他几个很多用来做边角料玩玩的
    alexsunxl
        10
    alexsunxl  
       2016-04-12 11:13:29 +08:00
    @robinlovemaggie react 有 native , 这个是未来。现在火的不要不要的。
    android 和 ios 两大阵型短时间是分不出高下了,为了更好的开发体验和效率,需要一层更高的抽象抹平平台差异。 就算没有 react native ,也会有其他的 xxx native 。微信内部也有类似的工具,名字忘了 大概是 weze ?
    Wangxf
        11
    Wangxf  
       2016-04-12 11:23:13 +08:00   1
    1.如果实在不知道选什么
    2.以前没有使用 mvvm 的经验
    3.想要适用更多的场景
    4.想要在团队内部推广开
    满足其中一条及以上选择 vue.js
    SouUED
        12
    SouUED  
       2016-04-12 11:31:27 +08:00 via iPad
    我觉的 React 的组件化做的比 vue 好, vue 的复用性没有 react 高,但是 vue 的语法对于常年写后端的同学比较友好,也没有什么服务端渲染的感念,和 angular 一样直接写就可以了。
    lynzz
        13
    lynzz  
       2016-04-12 11:37:37 +08:00
    最近做微信项目,就是采用 vuejs+webpack+vue-loader+vue-router,容易上手,且容易和其它库融合
    AlexaZhou
        14
    AlexaZhou  
       2016-04-12 11:43:21 +08:00
    蛮好用的,主要是比较轻量级, VeryNginx 中就是用的 vue.js
    chend
        15
    chend  
       2016-04-12 11:53:06 +08:00
    没用过 Vue , 看了官网的介绍, 感觉很简洁~~
    对比 ng ,轻量 更简单 性能更高
    对比 react , <http://cn.vuejs.org/guide/comparison.html>
    1: `相对于常见的误解 Virtual DOM 让 React 比其它的都快, Vue.js 实际上性能比 React 好` 这条不清楚~~
    2 :
    ```
    在 API 方面, React (或 JSX )的一个问题是,渲染函数常常包含大量的逻辑,最终看着更像是程序片断(实际上就是)而不是界面的视觉呈现。对于部分开发者来说,他们可能觉得这是个优点,但对那些像我一样兼顾设计和开发的人来说,模板能让我们更好地在视觉上思考设计和 CSS 。 JSX 和 Javascript 逻辑的混合干扰了我将代码映射到设计的思维过程
    ```
    这段深感赞同, jsx 组建化能力更强,但也更抽象。
    一段完整的 HTML 结构,要结合多个 class 来看, 不直观。
    实现一段效果的时候,用 react ,我需要先用 html 的方式想想改变的 css 属性及交互的 html 结构,再用组建化的思路想想要变化的关键 data ,最后写 react jsx function 。
    airyland
        16
    airyland  
       2016-04-12 11:54:34 +08:00   1
    文档详细,容易上手,周边工具完善,社区组件(暂时)较少, 正在发开基于 vue 的 UI 组件 https://github.com/airyland/vux
    hanyang
        17
    hanyang  
       2016-04-12 12:13:32 +08:00
    Vue.js 用着舒心 文档完善 组织合理 搞了个 Vue.js 版的 cnode.org 感受地址 https://github.com/ihanyang/cnode-vue
    Jaylee
        18
    Jaylee  
       2016-04-12 12:19:06 +08:00   1
    "只是当时一看是个国人作品就无视了"

    真是呵呵了
    kirisetsz
        19
    kirisetsz  
       2016-04-12 12:22:20 +08:00
    之前用 Vue 写了个网页, webpack+hot-reload 什么的全都用上了,有一点比较不开心,就是组件的属性需要先在 `data()` 里面返回才能在 template 里面 binding ;现在的话会选择 React 吧,组件化做的好,更重要的是生态也挺好的,很多可以直接用的工具库,团队开发投入应该不会比 Vue 高很多,相反,还可能得益于复用获得更高的开发效率。
    windfarer
        20
    windfarer  
       2016-04-12 12:26:52 +08:00 via Android
    高质量项目,不要因为是出自国人之手就有偏见
    kirisetsz
        21
    kirisetsz  
       2016-04-12 12:27:14 +08:00
    写 Vue 还是很快乐的,个人项目可以使用呢, LZ 为什么不都尝试一下呢 XD
    ty0716
        22
    ty0716  
       2016-04-12 12:31:52 +08:00
    VUE 上手容易,特别是搞后端的再也不用写那么多 js 了,有木有
    weilao
        23
    weilao  
       2016-04-12 13:09:42 +08:00
    Backbone.js 修改数据自动更新功能其实很容易实现,只要监听 model 发生 change 的时候调用 render 就行(但是效率得不到保障)。框架本身不强制你使用哪种模板,可以自由选择(另外几个框架都不具备这点)。 Backbone 的 Model 是很优秀的,但是后来的框架普遍弱化了 Model 的概念,感觉很可惜。

    Angular.js 开创了一个新的时代,使大家都意识到,原来很多事情都是可以自动完成的。但是作为先驱之一,他本身也有很多问题,最大的问题还是概念太多,很多奇葩的语法。学习成本相对较高,初学者容易写出一堆奇怪的东西,最好要有一个高手来规范代码。

    Vue.js 继承了 Angular 的诸多优点,并且不断将其他框架的优点整合进自己的框架中。对 model/data 的控制力不足(原生 Object 就是 model),不过可以使用 vuex 解决。中文文档很完备(毕竟国人出品),学习成本低。

    React.js 的单向数据流的思路很赞,使得代码更加可控(被 Vue.js 抄走啦)。不过 render 方法里面写渲染逻辑简直蛋疼到爆。 React 最强势的地方其实在于它的生态系统,有服务端渲染、 React Native 等,真正做到了 js everywhere 。
    wyntau
        24
    wyntau  
       2016-04-12 13:32:28 +08:00
    "只是当时一看是个国人作品就无视了"

    真是呵呵了
    beew
        25
    beew  
       2016-04-12 13:33:06 +08:00
    之前用 Backbone ,现在想感受一下 vue.js
    plqws
        26
    plqws  
       2016-04-12 13:42:23 +08:00
    比其他框架省心多了…
    doubleflower
        27
    doubleflower  
    OP
       2016-04-12 14:31:39 +08:00
    @weilao Backbone 自动刷新,这效率。。。还是得老老实实手工处理。另外页面不能组件化也是硬伤。 model/collection 的设计我觉得很不好,离了 Backbone 后我不但觉得更自由了且没有觉得更不方便。基于事件的架构在复杂情况下也容易乱套(比如循环触发),而 redux 无需事件的单向执行过程就很清楚。

    React 的 render/jsx 是天才的发明,我完全不觉得写在 js 里有任何不好,且组件化的设计使得一个 render 方法不会长,又和其它逻辑在一个类里更好理解和修改。
    HustLiu
        28
    HustLiu  
       2016-04-12 14:32:47 +08:00
    没用过 react ,就不乱说话了。
    作为 Vue 的忠实粉,大概 15 年初接触,切身体会,上手快,扩展性强,只需要对 mvvm 的理念以及相关的语法有所了解(主要是 director ),可以非常友好的接入到已开发的项目,从零开始构建一个项目更是酸爽,而且 router 、 vuex 这些官方插件的出现,对于用 vue 来构造一个 web app 或者是后台类的 web view ,都是非常方便的。
    zymmm3
        29
    zymmm3  
       2016-04-12 14:45:26 +08:00
    由兄弟, vue 和 meteor 结合的怎么样了?
    sox
        30
    sox  
       2016-04-12 14:52:35 +08:00
    Tooling + Vue 让开发简直快如疾风 https://github.com/egoist/tooling

    当然也可以 + React 2333
    chmlai
        31
    chmlai  
       2016-04-12 14:55:35 +08:00   1
    horizon
        32
    horizon  
       2016-04-12 15:13:37 +08:00
    楼主你都分析的这么透彻了还来问啥。
    Vue 或者 React 随便一个都 OK 吧。。
    xhowhy
       
    xhowhy  
       2016-04-12 15:44:07 +08:00   1
    MVVM 看上去很灵活,开发效率很高。问题在于对开发者没啥约束,只要改数据就影响 UI ,听起来酷炫牛逼,等业务复杂起来,程序员就很可能不知道视图变化是受哪里的数据改动影响了,深入调试起来比较费劲。总之 MVVM 学习曲线前期容易,后期纠结。
    React 提倡的单向数据流对开发者的编码习惯存在一定的约束力,数据流转和视图渲染都是树形的,对于非常复杂的业务来说,还是适合下猛药的,但是考虑到这味药确实很猛,破坏力可能会很大,建议谨慎考虑后选择。
    另外对于 MVVM 是否适合简单轻量的业务?程序员从来不知道哪天业务会分分钟扩大规模,说不定公司突然安排几位码农进来和你一起开发,到时候人手就不好管理了,七手八脚的,项目代码立马变一坨屎。结论 maybe 还是不适合。
    zackkson1991
        34
    zackkson1991  
       2016-04-12 15:52:00 +08:00
    前端新手,最近都在徘徊 Vue 和 React 之间。但是最后选择了 React ,因为感觉明显的组件化开发个人感觉更加清晰,当然我自己也觉得 Vue 很不错,因为轻量级,而且开发起来应该很爽~同样也很喜欢尤老师。哈哈~
    milklee
        35
    milklee  
       2016-04-12 16:11:10 +08:00
    歪个楼,只有我一个人看懂了楼主的头像了吗。。
    weberCd
        36
    weberCd  
       2016-04-12 17:08:50 +08:00   1
    以前不清楚,现在 vue 的状态是不必在 data 里面先返回的 @kirisetsz
    ivanlw
        37
    ivanlw  
       2016-04-12 18:21:33 +08:00 via iPhone
    什么都没用过,只是想问下楼上们,为啥没人提 ember.js ?
    clouddd
        38
    clouddd  
       2016-04-12 18:32:28 +08:00
    Vue 的作者本身就是一个跨艺术和科技界的奇葩
    Angular 和 React 都是纯码农最爱
    对于部分跨界认识而言, Vue 显然更入得了他们的法眼
    Bomok
        39
    Bomok  
       2016-04-12 18:39:34 +08:00
    react 写的是 web app
    vue 写的是 web page
    (我用 WIN ,忽略大小写……:)
    xiongbiao
        40
    xiongbiao  
       2016-04-12 18:43:40 +08:00
    现在正打算用 vue 写个东西
    csunny
        41
    csunny  
       2016-04-12 18:53:53 +08:00
    没人提 elm-lang 么
    xhowhy
        42
    xhowhy  
       2016-04-12 19:51:12 +08:00 via iPhone
    楼主是对的 Follow your heart
    xuwenmang
        43
    xuwenmang  
       2016-04-12 21:49:01 +08:00
    一个个人项目

    用啥都一样
    charlie21
        44
    charlie21  
       2016-04-12 22:05:34 +08:00   2
    前端框架挑花了眼? 建议直接看 “状态管理” 的思路(组件间通信形式的实现办法)
    http://www.alloyteam.com/2015/09/react-redux/

    无论用哪个,注意一定要有专门的 状态管理 的思路,比如 Redux 或 Vuex
    搭配就是 React+Redux 或 Angular+Redux 或 Vue+Vuex

    实际上,如果你觉得 Redux 是必需品,那么就很简单了:谁和它配合最好就选择谁
    markocen
        45
    markocen  
       2016-04-12 22:07:19 +08:00
    既然是个人项目,推荐用这三个框架都实现一遍,你就明白了
    smilingsun
        46
    smilingsun  
       2016-04-12 23:18:07 +08:00
    求问 vuejs 怎么学?感觉相关的书有点少( it-ebook 搜了下)
    hustlzp
        47
    hustlzp  
       2016-04-12 23:28:13 +08:00
    react+redux ,开发起来特别爽。
    tao1991123
        48
    tao1991123  
       2016-04-13 00:31:07 +08:00
    @smilingsun 直接去官网看教程就好 cn.vuejs.org
    banricho
        49
    banricho  
       2016-04-13 00:33:23 +08:00 via Android
    能好好看文档,写点项目再评价么。。。
    moonou
        50
    moonou  
       2016-04-13 08:52:59 +08:00
    上一个项目使用 vue 来做的单页,商业型的项目,使用 vue+vue-router+vue-resource+vue-loader+webpack+gulp+browsersync ,适合单人开发,多人开发时数据状态不好控制,可能使用 vuex 可以解决,没有理解到 flux 架构的设计理念,所以没有使用 vue 。没有使用过 react+redux ,只做过 TODO 的 Demo ,暂时无法评价,客户说要做一个论坛,准备使用 react+redux 深入学习一下 flux 类的架构
    geek123
        51
    geek123  
       2016-04-13 09:57:06 +08:00
    feilaoda
        52
    feilaoda  
       2016-04-13 10:06:40 +08:00
    公司全部项目都上 Vue.js 了,不知道会不会被坑死
    shellcodecow
        53
    shellcodecow  
       2016-04-13 10:15:00 +08:00
    Vue 做过个微信项目,很顺手(原本做 ios )。 独立开发推荐用这个。
    React + Redux 刚下载个源码,准备也学习一下。

    个人理解是 Vue 感觉像做 Web Page , React + Redux 更像 Web App

    我两个都要学....
    imjeen
        54
    imjeen  
       2016-04-13 11:22:27 +08:00
    去年秋季用 vue 写的 SPA ,被公司毙掉,很遗憾。

    最后自己把 demo 放到 github 里啦~ [https://github.com/imjeen/i]( https://github.com/imjeen/i)
    spark
        55
    spark  
       2016-04-13 11:27:49 +08:00
    React 是必学的, 生态圈太繁荣, 另外 React 开发组的野心比较大, 各平台通吃.
    Vue 适合短平快的项目, 大型项目暂时没有什么好的案例, 不过要看你怎么定义"大".

    Vue 最大的问题应该是维护人员, 注意, 是人员, 而不是组织, 很多围绕 Vue 的相关工具都是一个或几个人维护的, 如果哪天不高兴了... 不过作者也很清楚这个问题, 已经全职在做 Vue 的开发, 并且开始在招募一起开发维护的人员了.
    Wangxf
        56
    Wangxf  
       2016-04-13 14:12:35 +08:00
    @imjeen 做得可以,为什么会被毙掉?是技术选型问题?
    imjeen
        57
    imjeen  
       2016-04-13 14:42:18 +08:00
    接受的理由有千千万万,拒绝的理由也有千千万万:

    - 公司内部开发人员无法调配(人手紧缺)
    - 加上项目本身不是很独立,以及项目时间的期限
    - 技术总监不喜欢这么折腾,只希望项目安全上线
    - ……

    最后,自己都撕逼不过后台开发,他们也无法配合我。

    最后的最后,只剩我一个人自嗨啦~
    leefly
        58
    leefly  
       2016-04-13 15:04:13 +08:00
    @smilingsun 看下文档,然后官方有个 HackNews 的 demo , 这个基本把 vue 那一套都涉及到了。(我就是这样
    jokcy
        59
    jokcy  
       2016-04-13 16:12:33 +08:00   3
    用 vue 做开发最好能吃透一部分源码,能搞懂一些内部的东西,不然遇到问题你不好解决,同时也很难 google 到,因为受众较小,资源少。另外用 vue 你就要做好自己写组件的准备,因为很多组件你根本找不到,即便能找到,质量也很难保证。

    用 react 建议你跟着网上大众的做法走,因为实践较多,能碰到的问题基本已经被解决了,相对来说环境好太多,一般的问题 google 一下也是一大堆答案。

    react 入门比 vue 难, vue 要做好比 react 难
    poorbug
        60
    poorbug  
       2016-04-13 17:15:09 +08:00
    @alexsunxl 以前玩过一个叫 native script 的, telerik 家的,收费的,好像是比 react native 还早
    himulawang
        61
    himulawang  
       2016-04-13 21:37:44 +08:00
    为啥用 Polymer 的人这么少呢
    JaHIY
        62
    JaHIY  
       2016-04-13 21:49:15 +08:00
    facebook 自己都用 react 来构建自己的网站……
    yxwqwgz
        63
    yxwqwgz  
       2016-09-12 15:57:11 +08:00
    凸性自由探索吧。

    用一段时间,发现好,就留下,发现不好,就扔掉。凭空想象这个东西好不好,是想象不出来的。
    minipeach
        64
    minipeach  
       2016-11-04 16:54:50 +08:00
    @milklee 没看懂
    hasbug
        65
    hasbug  
       2016-11-24 17:27:15 +08:00
    @minipeach 放大看应该是一颗葡萄吧
    alber1986
        66
    alber1986  
       2017-10-27 10:07:50 +08:00
    我个人比较喜欢 vue.js
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2705 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 15:15 PVG 23:15 LAX 08:15 JFK 11:15
    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