vue3和vue2的区别

1,数据双向绑定原理不同

        1,vue2是采用es5的一个API object.defineProperty 对数据进行劫持,结合发布订阅者模式来实现

        2,vue3是采用es6的proxy API对于数据处理,相比于vue2它的优势在于:

        definePropety只能监听某个属性,不能对全对象监听

        可以省去for..in的循环,闭包等内容来提升效率

        可以监听数组,不再单独对数组做特定的操作,vue3可以监听到数组内部数据变化

2,是否支持碎片

        1,vue2不支持碎片化

        2,vue3支持碎片(Fragments),可以拥有多个节点

3,API不同

        vue2采用的是option API(选项类型api),里面包含了多个属性(data,mounted,computed...)

        vue3采用的是Composition API(组合式api),提高代码逻辑的可复用性,是代码更加简洁

4,定义数据变量和方法不同

        vue2是把数据放到data里面,创建方法要在methods中

        vue3使用了setUp(),在组件初始化的时候触发,使用以下三个步骤来建立反应性数据:

                从vue引入reactive;

                使用reactive()方法来声明数据为响应性数据;

                使用setUp()来返回我们的响应性数据,从而template可以获取这些响应性数据

5,生命周期钩子函数不同

        vue2的生命周期:

                beforeCreate()组件创建之前,created()组件创建之后

                beforeMount()组件挂载到页面之前 , mounted()组件挂载页面之后

                beforeUpdate()组件更新之前, updated()组件更新之后

        vue3的生命周期:

                setup()开始创建组件之前,

                onbeforeMount()组件挂载页面之前, onMounted()组件挂载页面之后

                onBeforeUpdate()组件更新之前, onUpdate()组件更新之后

        而且vue3生命周期在调用前需要先进行引入,出这些钩子函数外,vue3还提供了两个函数:

                onRenderTracked()(它会跟踪页面上所有响应式变量和方法的状态)                    onRenderTriggered()(它不会跟踪每一个值,而是给你变化值的信息)

6,父子传参不同

        vue2父传子props,子传父$emit,会调用this.$emit传入的事件名

        vue3父传子props,子传父$emit,vue3中setup()函数中的第二个参数content对象就有$emit

7,指令与插槽不同

        vue2中可以直接使用slot,v-for和v-if优先级v-for高,两者尽量不同时使用

        vue3中必须使用v-slot的形式,v-for和v-if优先级v-if高,两者不冲突

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值