React比Vue.js好在哪?

昌维
  • 4.5k

2019年最新补充
我重新学了一遍react.js
仍然没有体会到react究竟比vue好在哪

事件方法必须手动bind(this),state要手动初始化。无双向绑定机制,表单项和状态要手动用onChange事件绑定,并且还要单独为每个类似的事件处理写一个方法体只有setState的函数,而且还要处理event对象传入问题。某些情况下没有状态更新的component会仍然会重新渲染,然后还得手动shouldComponentUpdate来跳过一些组件的渲染。反正用起来有很多不方便的地方。jsx的写法让我想起了当年直接在html里面混合编写php的痛苦。我目前为止发现react.js除了小规模组件封装比vue稍微轻量一点(不需要单独建立一个vue文件,而是写个函数return jsx内容就好了) 其他并没有比vue方便多少。


以下是原文

我最近稍微学了一下ReactJS,感觉写起代码来很奇怪,虽然说要比直接操作dom的jquery好多了,但是总感觉代码量太大了,而且看起来不直观。

Vue.js那种模版引擎式的声明式绑定看起来更加直观,让我们这些用习惯了后端模版引擎比如说Java的JSP,php的smarty的人来写要亲切多了(比如说v-if,v-for之类的)。语法糖也多,什么methods,data区分的很明确,代码简洁而明了。

ReactJS的JSX语法看起来很怪异,render方法返回的模版本身还需要改写原生html的一些地方(比如说className之类的),数据绑定方面得自己写对象,然后自己给他加set,get方法(就像写java实体类一样很繁琐),然后通过在dom里面监听change事件,触发事件来实现数据绑定,感觉反而有点不优雅。(我还没学到redux这里,不知道这个东西是否能让这种数据绑定操作简单一点)

但是现在很多大型商业项目比如说新版知乎用的就是ReactJS,想必他一定也有自己的优势特色把,所以请问一下这个框架优点有哪些呢?相对于Vue.js来说又有什么除了我说的以外的哪些不足呢?

回复
阅读 27.8k
18 个回答

React 与其说是一种框架,倒不如说是一种开发范式。它的核心理念非常简单:

界面/视图就是数据结构的可视化表达
UI = f(data)

而界面/视图由组件组合而来
UI = f1(data) + f2(data) + f3(data) + ...

That's all.

React 扮演的角色就是上述公式中的 f,它完全是函数式的,组件就是函数,给它一个输入(传参),它就返回一个输出(UI)。只有理解了这种开发理念,用 React 才会得心应手。如果只是去学“语法”,仅满足于“能用”,React 确实会显得非常怪异而麻烦。

Vue 的核心理念与 React 其实是一致的,但在 API 的实现上 Vue 对于用户而言更加友好。不像 React,Vue 不会要求用户“Think in Vue”,因为不需要,Vue 是一个渐进式的框架,它并没有大幅改变用户原有的开发方式,它既可以作为插件植入老的 jQuery 项目,也可以作为整个项目的核心框架层。并且 Vue 提供了各种实用的 API,而 React 本身的 API 非常少,许多功能需要自行封装或引用现成的组件。

从能力上讲,两个框架其实差别不大,几乎不存在 React 能干而 Vue 干不了或 Vue 能干而 React 干不了的事,不都是 JS 嘛。不过 React 对于使用者的 JS 能力有一定要求,而 Vue 基本上跟 jQuery 一样前端入门一个月就开始学也没什么问题,以致于知乎上有人开始担心 Vue 大幅削弱了前端的门槛,降低了前端的水准。。。

在实际业务中,我个人更倾向于 Vue,理由就是简单,简单就是好。招人方便,就算不会,很快能上手,写出的代码就算渣,改起来也相对容易。滴滴、饿了么都是 Vue 的深度实践者,百度、京东也有相关实践,阿里直接与 Vue 合作搞了 weex,微信小程序的 API 几乎就是 Vue 的翻版。会用 Vue,同时就会了 weex 和小程序。做后台用
Element UI,简直找不到更好更高效的后台应用解决方案了。Vue 就是新时代的 jQuery,是广大中小型互联网公司的福音。

至于为什么有些团队选择 React,我个人猜测的原因是:首先他们有足够的实力;其次,决策者的精英主义情节让他们下意识的避免容易被认为“简单”的东西;第三,Vue 一开始是个人搞的业余项目,且比 React 晚了两年,还未得到足够的验证,而 React 出身不凡,并且在自家产品里有广泛实践。

总之,我看好 Vue。先学 Vue 再学 React,你会忍不住感慨:真是太麻烦了,太麻烦了。而先学 React,再学 Vue,你会忍不住感慨:真是太方便了,太方便了。

之前因为老大要求 然后学习了react 真的 学起来确实拗口 感觉就是比较难以理解 写起来感觉很奇怪 主要就是写js的时候 就是觉得很怪 而且 写的时候你很难往它的思路上走 虽然可以理解 但是 写起来就是很拗口 比如props啊 传值的时候感觉难以理解 同时 react只是一个view层 你要想学好 真的是还要费特别多的功夫 还要学好让人难以理解的flux 要不然 用react的意义也就不大了 可能自己本身比较笨 感觉真的挺难

然后 最近学习了一下vue 确实 用起来真的好方便 也很容易上手 它的父子组件通信抑或是不同组件之间通信什么的 都是比较容易理解的 就是render函数那部分还是有点懵逼

之前也联系过一段时间的angular 也不知道现在的2成什么样了 相比较 react angular也是特别容易理解 model、control、router angular的这三部分 真的是分得特别清楚 一看就清楚 还有它“需要什么 就注入什么”的思想也是很清晰

谢邀。

react与vue都有在用,我不是太想回答到底哪个比哪个好。两者给我的感觉都差不多,从模版到事件再到数据流(redux 与 vux,都是flux概念), 个人感觉vue是在react与angular两者之间的优点结合下的产出。其实谁更好,完全看自己编码喜好吧。但唯一一点让我觉得vue还是不错的是它的双向数据绑定,react是单向的。

关于是否react比vue好,这个问题不重要,重要的是自己喜欢哪个,自己的项目用哪个更合适。每个人都有自己不同的意见,在你不了解他们的时候只会被这些回答把你自己搞懵逼了,还不如自己找时间深入了解下到底差别在哪里。

讨论哪个框架更好,或者跟人撕逼vue比react好或者比angular好,不觉得是极其无聊毫无意义的事情吗?

有这时间还不如多看看源码与文档更深入的去了解人家到底好在哪里。

个人观点,勿喷...

vue就是小白看一上午就可以上手开发的,react估计还在记那些乱七八糟的语法,最好是两个都看看,这样对喷的时候才能有理有据

Vue和React个人觉得还是相差挺大的。
指Vue0.x和1.x,2.x没用过。
React和全组件化思想以及高内聚,低耦合以及props是优点,但是玩的不转的话会被坑,玩得好的话项目大小没有问题,而且也有活跃的社区,工具链,最佳实践等等。
Vue简单一点,上手也快,但是项目大的话,如果抽象能力不强,容易重复遭轮子

我之前看了一篇外国大牛写的一篇文章,感觉非常有道理, 翻译出来了, 地址:http://www.mh611.com/blog/201...

原文中有一段翻译,个人认为还是比较经典的:

React是用js来包含html, 而Vue.js, Angular之类的是用html来包含js.

html从出现的那一刻开始就比较涣散,对Html标签的扩展,所能实现的能力远不如用js的强大功能来实现。

另外扩展html, 使用者另外还要学习一套语法结构。 react则不用过多学习额外语法。

管是这两个还是其他的
选适合自己项目的就可以。
也可以自己搞一个适合自己业务的,不用其他的。
没什么攀比的吧

刚好相反。我就喜欢react,
vue真的好难用
学了几个月vue了,仍然不会用,公司非要用vue,

。。。好怀念以前能用react,用起来特别直观舒适

vue这种模板引擎方式,我真的不知道该如何复用组件。。我好心累用vue


好吧现在是2019/5/12
一年多过去了.
前端也忘了差不多了...哈哈哈

遥远的地方
  • 2
新手上路,请多包涵

我怎么就觉得模版语法比jsx难用?还有那么多的全局api,什么$forceUpdate(),$emit(),很难记。

都学吧,vue入门确实比react简单,要是从用户体验角度考虑,绝对是vue是最好的产品经理

谢邀,没觉得 React 比 Vue 好,因此虽然在用 React,但没有去学他。

如你所说,React 没 Vue 易学,也有不少令人不习惯的地方,因此我现在维护的一个项目中,可以看到好多前人留下来的不优雅的写法,可以不完全归纳出——要么是 React 难学前人没学精,要么是 React 本身不够优雅。

要说优点的话,社区更发达是最大优点之一。

然后就是风格问题,React配合严格Flux架构更适合大型的多人协作复杂项目,但与此同时它又不如Vue的灵活。

其他方面只能说各有优劣。而题主所说的几点,更多是个人喜好问题,很难称的上是优劣。

选自己喜欢的就好。

React还是Vue:你该如何选择?

没有那个好,只有最合适

react 容易处理逻辑性强的组件, vue 模板方式有局限, 不容易调试

启明星 徐
  • 2
新手上路,请多包涵

完全不赞同。 1. 从语言设计角度来讲,都是给用户的原始API越少越好,概念越少越好,讲究万剑归宗,以不变应万变。 2. 而vue倒好,像裹脚布又臭又长,里三层外三层的语法糖,个人想法。 这样咱们编程从数据结构上分析就变得不那么贴近 prototype this这类本源。 总结: vue就是啰里八嗦,流水账地写api 语法糖, 你们等着以后重构吧。 大胆预测,以后vue肯定会精简语法。 react武功秘诀看一个小时差不多记住了,vue奈何武功招式太多了!!! 张无忌也没办法啊!!!

你知道吗?

宣传栏