浅谈Vue与React的区别

经过你自己的学习,相信你们你对vue与react已经有了一些了解,也觉得这两大框架有一些相同之处。那咱们就来谈一下你觉得这两大框架有什么地方是不太一样的?

我觉得最大的相同点就是虚拟DOM节点,react与vue只有框架的骨架,其他的功能就是一些组件。

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

vue的话使用getter|setter 方法或者函数的劫持,去来判断数据的变化与否,不需要去做一些特别的优化就可以达到一些功能。react是通过比较引用的方法进行的,加入不进行优化的话,可能会导致一些VDOM进行重新渲染。

2 数据来看也是有区别的

vue是支持双向绑定的,但是react是不支持双向数据绑定的,是单向数据流有关。

3 mixins与Hoc

vue组合一些相同的逻辑的话通过minxins进行混入,react的话是通过hoc高阶组件进行完成,参数是组件,返回的依旧是一个组件,使用回调函数居多。

4 组件通信的话

vue中三种通信方式

(1)父组件通过props向子组件进行传输数据或者回调。

(2)子组件通过 事件 向父组件进行发送消息。

(3)也可以通过组件在进行包裹进行跨级传递。

react中

(1)父组件通过 props 可以向子组件传递数据或者回调

(2)可以通过 context 进行跨层级的通信,这其实和 provide/inject 起到的作用差不多。

可以看到,React 本身并不支持自定义事件,Vue中子组件向父组件传递消息有两种方式:事件和回调函数,而且Vue更倾向于使用事件。但是在 React 中我们都是使用回调函数的,这可能是他们二者最大的区别。

5、模板渲染方式的不同

在表层上, 模板的语法不同

Vue是通过一种拓展的HTML语法进行渲染。

React 是通过JSX渲染模板(表面现象,毕竟React并不必须依赖JSX。);

在深层上,模板的原理不同,这才是他们的本质区别:

Vue是在和组件JS代码分离的单独的模板中,通过指令来实现的,

    比如条件语句就需要 v-if 来实现。

React是在组件JS代码中,通过原生JS实现模板中的常见语法,

    比如插值,条件,循环等,都是通过JS语法实现的;

React的好处:

react中render函数是支持闭包特性的,所以我们import的组件在render中可以直接调用。但是在Vue中,由于模板中使用的数据都必须挂在 this 上进行一次中转,所以我们import 一个组件完了之后,还需要在 components 中再声明下,这样显然是很奇怪但又不得不这样的做法。

6、Vuex 和 Redux 的区别

从表面上来说,store 注入和使用方式有一些区别。

在 Vuex 中,$store 被直接注入到了组件实例中,因此可以比较灵活的使用:

使用 dispatch 和 commit 提交更新;

通过 mapState 或者直接通过 this.$store 来读取数据。

在 Redux 中,我们每一个组件都需要显示的用 connect 把需要的 props 和 dispatch 连接起来。另外 Vuex 更加灵活一些,组件中既可以 dispatch action 也可以 commit updates,而 Redux 中只能进行 dispatch,并不能直接调用 reducer 进行修改。

从实现原理上来说,最大的区别是两点:

(1)Redux 使用的是不可变数据,而Vuex的数据是可变的。Redux每次都是用新的state替换旧的state,而Vuex是直接修改

(2)Vuex其实和Vue的原理一样,是通过 getter/setter来比较的(如果看Vuex源码会知道,其实他内部直接创建一个Vue实例用来跟踪数据变化)Redux 在检测数据变化的时候,是通过 diff 的方式比较差异的,而相比之下,Vue更偏向于简单迅速的解决问题,更灵活,不那么严格遵循条条框框。因此也会给人一种大型项目用React,小型项目用 Vue 的感觉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值