vue和react的区别是什么?

3 篇文章 0 订阅

vue和react的区别是什么?

1. 监听数据变化实现原理不同

因为vue的设计理念是使用可变的数据,所以Vue可以通过 getter/setter以及一些函数的劫持,能精确知道数据变化。
React不能精确的监听到数据的变化是因为React在设计理念上强调的是数据的不可变。
两者之间没有好坏之分,vue相对react来说更加的简单,更容易上手,而react在构建大型应用的时候更加鲁棒(不知道鲁棒的自己百度百科吧)

2.数据流不同

vue可以实现双向数据绑定(vue1.0版本中的时候可以实现父子组件之间props的双向绑定,但是vue2.x以后就变成了单向的绑定,也就是所谓的父子通信以及子父通信(在子父通信中vue2.x以后提供了$emit这个语法糖来协助)),而react提倡的是单向数据流称之为onChange/setState()模式

3.框架本质不同

vue使用的是MVVM框架,由MVC框架发展过来,拥有视图层、模型(业务逻辑)层以及控制层
react是前端组件化框架,是由后端组件化发展而来,而且react只是一个视图层。

4.模板 vs JSX

vue鼓励去写近似常规的HTML的模板,写起来很接近HTML元素,同时vue将html,css,js都整合在一个页面内,方便对每一个组件进行单独的样式设计以及逻辑编辑。自我感觉比较容易上手。
在这里插入图片描述

React推荐你所有的模板通用JavaScript的语法扩展——JSX书写,这也造就JSX在写法上更加侧重于js代码。

5.状态管理 vs 对象属性

对于React来说,应用中的状态是(React)关键的概念。也有一些配套框架被设计为管理一个大的state对象,如Redux。此外,state对象在React应用中是不可变的,意味着它不能被直接改变(这也许不一定正确)。在React中你需要使用setState()方法去更新状态。

addToOrder(key) {
        //Make a copy of this.state
        const orders = { ...this.state.orders };

        //update or add
        orders[ key ] = orders[ key ] + 1 || 1;
        this.setState( { orders } );
 }

在Vue中,state对象并不是必须的,数据由data属性在Vue对象中进行管理。

export default {
  name: 'app',
  data() {
    return {
      samplePasta: samplePasta,
      orders: {}
    }
  },
...
  methods: {
    handleOrder: function (key) {

      if (!this.orders.hasOwnProperty(key)) {
        this.$set(this.orders, key, { count: 0 });
      }

      this.orders[key].count += 1;
    }
  }
}

而在Vue中,则不需要使用如setState()之类的方法去改变它的状态,在Vue对象中,data参数就是应用中数据的保存者,而且data参数内部的变量值是可以直接被修改的。

对于管理大型应用中的状态这一话题而言,Vue.js的作者尤雨溪曾说过,(Vue的)解决方案适用于小型应用,但对于对于大型应用而言不太适合。
多数情况下,框架内置的状态管理是不足以支撑大型应用的,Redux或Vuex等状态管理方案是必须使用的。

这也就引出下面的一个不同点了

5.Redux和Vuex的区别

Redux和Vuex都是项目管理工具,他俩的区别在于,react的设计理念是数据不可变,所以Redux中每次要更新state中的数据时都需要用到this.setState({ })方法来修改数据,而vuex因为vue数据可改变的原因,所以vuex可以直接对data内的数据进行修改。Redux在检测数据变化的时候使用的diff方式比较差异,Vuex确实用的getter/setter两种方法来检测数据的变化。

暂时就知道这些了,欢迎补充。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
VueReact 是两个非常流行的 JavaScript 框架,它们在设计理念、语法特性、组件化思想、性能、生态等方面有很多不同之处。 1. 设计理念 Vue 的设计理念是“渐进式框架”,强调易用性和灵活性,可以在现有的项目中逐步引入 Vue,也可以作为全新项目的基础框架。Vue 的核心思想是数据驱动,通过数据的变化来自动更新视图,同时支持声明式渲染和组件化开发。 React 的设计理念是“函数式框架”,强调组件化思想和可复用性,通过将 UI 拆分成独立的组件,使得代码更易于维护和扩展。React 的核心思想是虚拟 DOM,通过比较前后两个虚拟 DOM 的差异,最小化 DOM 操作,提高性能。 2. 语法特性 Vue 使用了模板语法,类似于 HTML,可以直接在模板中使用变量和表达式,还支持指令和过滤器等语法特性,使得模板更加简洁易懂。 React 使用了 JSX 语法,将 HTML 和 JavaScript 代码混合在一起,需要将 HTML 标签转换成 React 组件,使得代码更加灵活和可控。 3. 组件化思想 VueReact 都强调组件化思想,将 UI 拆分成独立的组件,每个组件有自己的状态和生命周期,可以方便地组合和复用。 Vue 的组件化开发比较简单,可以通过单文件组件(.vue)的方式,将模板、JS 代码和 CSS 样式放在同一个文件中,使得组件更加独立和封装。 React 的组件化开发需要手动管理状态和生命周期,需要使用类组件或函数组件的方式定义组件,可以使用 JSX 语法或纯 JavaScript 代码来渲染 UI。 4. 性能 VueReact 都采用了虚拟 DOM 技术来提高性能,通过比较前后两个虚拟 DOM 的差异,最小化 DOM 操作,避免了频繁的页面重绘和回流,提高了性能。 Vue 的虚拟 DOM 采用了双向绑定的方式,可以自动更新视图,但是在大型应用中,可能会导致性能问题。 React 的虚拟 DOM 采用了单向数据流的方式,需要手动管理状态和生命周期,但是在大型应用中,可以更好地控制数据流,提高性能。 5. 生态 VueReact 都有非常丰富的生态圈,有大量的第三方库和插件可以使用,可以满足各种不同需求的开发。 Vue 的生态圈相对较小,但是有很多优秀的插件和组件库,如 Vuex、Vue Router、Element UI 等。 React 的生态圈相对较大,有很多强大的库和框架,如 Redux、React Router、Ant Design 等。 总体来说,VueReact 都是非常优秀的 JavaScript 框架,各有优缺点,需要根据具体需求来选择。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值