思路
Vue是一个定位UI,是数据响应式框架(多数人说是MVVM框架,因为Vue1是MVVM框架,但Vue2只有v-mode才能体现MVVM)
React强调单向数据流,需要手动setstate,
语法:React最重要的是Template标签,写类似HTML的东西,Vue用的是JSX,
函数式:React推出了Hooks。VUE3是借鉴了hooks,推出了composition API
UI更新逻辑:React是DOM Diff,React对比两次不同的虚拟DOM,得到一个pitch,将pitch更新到页面中。Vue从Vue开始支持虚拟DOM,你只需要改data.name。VUE只需要去找用到这个变量的所有DOM,然后更新他就好了,不需要diff,只需要在渲染的时候记住(track)那些用到了... node.js没法支持真的DOM,node.js只能渲染虚拟DOM,因为DOM只在浏览器中才有,node里没有这个环境
文化: Vue的作者是把相关所有库都帮你写好了,官方推出了VUEx,vue reacte,命令行,CUI, 而React只推出了react
答题模版
这两个框架的定位是差不多的,他们都是用来处理ui层的框架,只不过VUE提议渐进式处理,功能可以一点一点加上去;react就没有渐进式,如果需要用react,我们需要把以前的jQuery都去掉,加入JSX,react才能进行开发
语法差别大: 在vue里面比较推崇模版的写法,类似HTML的标签; react就是相反的,react是把所有东西都写在JS里面,在js里面可以使用jsx语法,也就是类似标签的一种写法,但是vue是可以支持react的jsx的语法,反过来react是不支持vue的Template写法的,
react16.8以后推出了Hooks,vue2是没有Hooks的,但Vue3是把这个Hooks借鉴过去,基于Hooks的理念推出了composition API,所以我们认为最新版的react和最新版的vue都有hooks风格的API
UI更新的策略不太一样: 在react里面,要传入一个新的数据,不能修改旧的数据,用新的数据代替之前的数据,react会对比两次DOM渲染后的Diff去更新UI;
vue更新UI主要是它监听数据的变化,只要数据变化了他就会计划更新UI(不是马上更新,都会延迟一会更新),原理就是数据响应式
社区文化不一样: vue就是把所有重要功能都提供了,Vuex做数据管理,vue reaut做路由,VueCUI做脚手架等;
react就是推荐大家找第三方库,目前react只推出了react本身,react脚手架就这两个,需要自己操作和组合这些东西
keep-alive: 用vue的同学可以很轻易的实现这个组件不死,等你切换回来还跟原来的一模一样,临时的数据用vue的keep-alive可以保存;react是重新渲染的,就需要你把数据手动存到一个地方,切换路由时,你要把用户没保存的数据存下来。
第二:滚动的高度,比如说一个组件我们滚动一定距离,这时我们切换路由,react再回来会跑到最低端,vue会保持在滚动位置
css scope:vue的css是很容易就可以实现一个作用域的,react需要使用第三方的库