Vue:Vue是一个用于构建WebUI的渐进式框架。“渐进式框架”和“为自下而上的增量开发而设计”是Vue开发的两个概念。特点:使用方便,使用成本低;灵活、完整的生态系统。React:React提倡函数式编程的理念,以实现前端界面的高性能、高效率开发。React擅长处理组件化页面。在React中,所有的组件渲染功能都依赖于JSX,它是JavaScript的语法扩展(jsx==js+xml),在创建UI组件和调试时非常简单和有用。一、共同点:1、数据驱动的视图。2.组件化。3.都使用VirtualDOM+Diff算法。2、不同点:核心思想不同:Vue的定位是尽可能的降低前端开发的门槛,让更多的人更快的上手开发。一个灵活易用的渐进式数据拦截/代理框架,更灵敏/准确地检测数据的变化。React定位是UI开发的新思路。提倡函数式编程(纯组件)、不可变数据和单向数据流。需要双向数据流时手动实现(onChange和setState)。对应公式的原理不同:Vue依赖收集,自动优化,可变数据。递归监控数据的所有属性,直接修改。当数据发生变化时,会自动找到引用组件并重新渲染。React基于状态机,手动优化,数据不可变。您需要使用setState来驱动新状态替换旧状态。当数据发生变化时,以组件为根目录,默认全部重新渲染,所以需要React中的shouldComponentUpdate生命周期函数方法来控制。组件写法的区别:React推荐JSX+内联风格,即把HTML和CSS全部写成JavaScript,也就是全部写在js中;Vue推荐模板单文件组件格式(简单易懂,由传统前端转换而来易于理解),即html、css、js全部写在同一个文件中(Vue也支持JSX写法)。这种差异在一定程度上也是由两者的核心理念不同造成的。diff算法:Vue比较节点。当节点元素相同,但className不同时,认为是不同类型的元素,删除重建。React认为它是同一类型的节点,只是修改了节点的属性。Vue的列表比较采用从两端向中间比较的方式,而React采用从左向右比较的方式。当一个集合只是将最后一个节点移动到第一个时,React会依次移动前面的节点,而Vue只会将最后一个节点移动到第一个。总的来说,Vue的方法更高效。渲染过程:Vue可以更快地计算出VirtualDOM的差异,因为它会在渲染过程中跟踪每个组件的依赖关系,而无需重新渲染整个组件树。当应用程序的状态发生变化时,React会重新渲染所有子组件。可以通过shouldComponentUpdate生命周期函数方法来控制,但Vue将此视为默认优化。如果应用程序中的交互很复杂,需要处理大量的UI变化,那么使用VirtualDOM是个不错的主意。如果不经常更新元素,那么VirtualDOM不一定适用,性能可能不如直接操作DOM。Vuex和redux:从表面上看,store注入和使用有一些区别。在Vuex中,$store直接注入到组件实例中,因此可以更灵活的使用:使用dispatch、commit提交更新,通过mapState读取数据或者直接通过this.$store。在Redux中,我们的每个组件都需要显式地使用connect来连接所需的props和dispatch。另外,Vuex更加灵活。组件可以派发动作或提交更新,而Redux只能派发,不能直接调用reducer进行修改。在实现原理上,最大的区别有两个:Redux使用的是不可变数据,而Vuex的数据是可变的。因此,Redux每次都会用新状态替换旧状态,而Vuex则直接Revise。Redux在检测到数据变化时,使用Diff来比较差异,而Vuex其实和Vue的原理是一样的,都是使用getter/setter来进行比较。这两点的区别也是因为React和Vue的设计理念不同。React更倾向于构建稳定的大型应用,非常专业。相比之下,Vue更倾向于简单快速地解决问题,更加灵活,不严格遵守规章制度。因此,也会给人一种大项目用React,小项目用Vue的感觉。框架:Vue的本质是MVVM框架,由MVC发展而来。React是从后端组件化发展而来的前端组件化框架。3.语法差异路由循环:vueloopdom在html中使用v-for指令循环。React使用{array.map((loopeddata,tablebelow)=>{})}来循环。跨域:Vue是用vue.config.js写的。React写在package.json中,也可以写在src文件夹下的setupProxy.js中。四。react和vue的选择Vue:1.最新的文档和更简单的语法2.更小,更快,更灵活3.需要丰富的HTML模板,易于开发。React:1.需要构建移动应用2.需要构建大型应用。3.轻量级,版本迁移方便。
