React 与 Vue 比较
日期:2019 年 11 月 28 日
React 与 Vue 比较
简单介绍
React 与 Vue 都是当前主流的前端框架,React 是由 Facebook 创建的 JavaScript UI 框架,Vue 则是由尤雨溪与2014年开发的,两者都专注于创造更加丰富的前端应用,但是两者又有着相似与不同之处,下面就来简单总结一下
相似之处
Virtual DOM
所谓 Virtual DOM ,字面意思就是虚拟 DOM,它是映射真实 DOM 的 JavaScript 对象,如果需要改变任何元素的状态,那么是先在 Virtual DOM 上进行改变,而不是直接改变真实的 DOM ,当有变化产生时,一个新的 Virtual DOM 对象会被创建并计算新旧 Virtual DOM 之间的差别并应用到真实的 DOM 上
但是 React 和 Vue 在计算新旧 Virtual DOM 的差异并反应到真实 DOM 上所用的方法略有不同:
Vue 由于在渲染过程中,会跟踪每个组件的依赖,所以可以更快地计算出 Virtual DOM 的差异,不需要重新渲染整个组件树;
React 是当应用状态被改变时,全部子组件都会重新渲染(个人理解:React 的组件都是写在 render() 函数之中的,当应用状态改变时会触发 render() 函数,render() 函数就会将所有的子组件都重新渲染一遍)
组件化
React 与 Vue 都鼓励组件化应用,也就是建议你将应用拆分成一个一个功能明确的模块,每个模块可以通过合适的方式互相联系
Props
React和Vue都有'props'的概念,这是properties的简写。props在组件中是一个特殊的属性,允许父组件往子组件传送数据
构建工具
React和Vue都有自己的构建工具,你可以使用它快速搭建开发环境,React可以使用Create React App (CRA),而Vue对应的则是vue-cli
配套框架
两个框架都专注于UI层,其他的功能如路由、状态管理等都交由同伴框架进行处理,React 有 redux 和 react-router,而 Vue 有 vuex 和 vue-router
而不同之处是在于它们如何关联它们各自的配套框架。Vue的核心团队维护着vue-router和vuex,它们都是作为官方推荐的存在;而React的react-router和react-redux则是由社区成员维护,它们都不是官方维护的
两者区别
JSX vs 模板语法
React推荐你所有的模板通用JavaScript的语法扩展——JSX书写;Vue鼓励你去写近似常规HTML的模板,写起来很接近标准HTML元素,只是多了一些属性
状态管理 vs 对象属性
状态是 React 关键的概念,也有一些配套框架被设计为管理一个大的state对象,如Redux。此外,state对象在React应用中是不可变的,意味着它不能被直接改变(这也许不一定正确)。在React中你需要使用setState()方法去更新状态
在 Vue 中,state 对象并不是必须的,数据由 data 属性在 Vue 对象中进行管理,在 Vue 中,则不需要使用如 setState() 之类的方法去改变它的状态,在 Vue 对象中,data 参数就是应用中数据的保存者
注意:多数情况下,框架内置的状态管理是不足以支撑大型应用的,Redux或Vuex等状态管理方案是必须使用的
React Native vs Weex
React Native能在手机上创建原生应用,React在这方面处于领先位置。使用JavaScript, CSS和HTML创建原生移动应用,这是一个重要的革新。Vue社区与阿里合作开发Vue版的React Native——Weex也很不错,但仍处于开发状态且并没经过实际项目的验证
参考:Vue vs React: Javascript 框架之战