React和vue的区别

在学完了react和vue之后,对两个主流的前端框架都有了一些自己的了解。结合官方文档和自己的使用感受来分享一下React和Vue的区别,看完的话相信你会对这两大框架会有更深刻的认识,从而找到适合你自己的框架。

两者的区别有以下几点:

(1)数据是不是可变的

react整体上是函数式的思想,状态和逻辑通过参数传入,所以在react中是单向数据流(react会在setstate之后重新走渲染的流程,如果是shouldcomponentUpdate返回true就渲染;返回false则是不渲染)。

vue则是响应式的思想,也就是基于数据可变的,通过对每一个属性建立Watcher观察者来监听,当属性变化时响应式更新对应的虚拟dom。

(2)通过js来操作一切还是用各自的处理方式

react的思路是all in js ,通过js来生成html即jsx;通过js来操作css如社区的styled-component,jss等。

vue的思路则是各自处理,把html,css,js组合到一起,用各自的处理方式;vue有单文件组件可以把html、css、js写到一个文件中,html提供了模板引擎来处理。

(3)什么功能内置,什么交给社区去做

react做的事情很少,很多都交给社区去做,vue很多东西都是内置的,写起来确实方便一些, 比如 redux的combineReducer就对应vuex的modules, 比如reselect就对应vuex的getter和vue组件的computed, vuex的mutation是直接改变的原始数据,而redux的reducer是返回一个全新的state,所以redux结合immutable来优化性能,vue不需要。

总结:react整体的思路就是函数式,所以推崇纯组件,数据不可变,单向数据流,当然需要双向的地方也可以做到,比如结合redux-form,而vue是基于可变数据的,支持双向绑定。react组件的扩展一般是通过高阶组件,而vue组件会使用mixin。vue内置了很多功能,而react做的很少,很多都是由社区来完成的,vue追求的是开发的简单,而react更在乎方式是否正确。

使用感受:其实react就是用JavaScript编写一切,用js来写html,甚至可以使用社区提供的方法来书写css,体现出一种函数式的思想。它不会给你提供各种接口去方便你进行开发,而是用js去解决一切,对自身的JavaScript能力有一定要求,如果你比较熟悉JavaScript会对react中方法会理解起来更加容易,使用的时候不用去记忆接口名称,使用JavaScript就能编写出各种功能。Vue的话使用起来就一个感觉简单易用,因为vue提供了非常多的接口指令,方便你进行各种操作,对于每种工作中可能遇到的操作vue都贴心地为开发者提供了相应的接口,所以vue用起来是非常容易的。React一般都是适用于一些大型的项目,因为它是单向数据流能够保证数据的传输的准确性;Vue则是适用于那些小型一点,数据量不大的项目,由于vue的双向绑定数据,会对传入进来的数据添加一个Watcher观察者监听数据的变化,当一个项目的数量特别巨大且变化频繁的时候,也会出现卡顿的现象。

你可能感兴趣的:(javascript,开发语言,ecmascript,vue.js,react.js)