跳到主要内容

react和vue的区别

Vue 使用的是 web 开发者更熟悉的模板与特性,Vue 的 API 跟传统 web 开发者熟悉的模板契合度更高,比如 Vue 的单文件组件是以模板+JavaScript+CSS 的组合模式呈现,它跟 web 现有的 HTML、JavaScript、CSS 能够更好地配合。React 的特色在于函数式编程的理念和丰富的技术选型。Vue 比起 React 更容易被前端工程师接受,这是一个直观的感受;React 则更容易吸引在 FP 上持续走下去的开发者。

从使用习惯和思维模式上考虑,对于一个没有任何 Vue 和 React 基础的 web 开发者来说, Vue 会更友好,更符合他的思维模式。React 对于拥有函数式编程背景的开发者以及一些并不是以 web 为主要开发平台的开发人员而言,React 更容易接受。这并不意味着他们不能接受 Vue,Vue 和 React 之间的差异对他们来说就没有 web 开发者那么明显。可以说,Vue 更加注重 web 开发者的习惯。

实现上,Vue 跟 React 的最大区别在于数据的 reactivity,就是反应式系统上。Vue 提供反应式的数据,当数据改动时,界面就会自动更新,而 React 里面需要调用方法 SetState。我把两者分别称为 Push-based 和 Pull-based。所谓 Push-based 就是说,改动数据之后,数据本身会把这个改动推送出去,告知渲染系统自动进行渲染。在 React 里面,它是一个 Pull 的形式,用户要给系统一个明确的信号说明现在需要重新渲染了,这个系统才会重新渲染。两者并没有绝对的优劣之分,更多的也是思维模式和开发习惯的不同。两者不是完全互斥的,比如说在 React 里面,你也可以用一些第三方的库像 MobX 实现 Push-based 的系统,同时你也可以在 Vue2.0 里面,通过一些手段,比如把数据 freeze 起来,让数据不再具有反应式特点,或者通过手动调用组件更新的方法来做一个 pull-based 系统。所以两者并没有一个绝对的界限,只是默认的倾向性不同而已。