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 · 44289 次点击
    这是一个创建于 3147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    打算新开一个个人项目,在 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 。
    Jeremial
        24
    Jeremial  
       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
        33
    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   ·   实用小工具   ·   2781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:05 · PVG 21:05 · LAX 05:05 · JFK 08:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.