Vue2和Vue3的区别

 1. 响应式不同

vue2vue2中使用的是 ES5 object.definepropert() 中的 setter 和 getter 方法对数据进行劫持监听,结合发布订阅模式来实现的
vue3vue3中使用的是 ES6 Proxy 来实现劫持监听

     

    object.definepropert 和 Proxy 的区别

    (1). definepropert只能监听某个属性,不能对全对象进行监听

    (2). 可以省去for in闭包等内容来提升效率

    (3). 可以监听数组,不用再去单独的对数组做特异性操作vue3可以检测到数组内部数据的变                   化。

2. 节点不同

vue2就是在组件中只能有一个根节点(template标签),不能支持多个templa标签
vue3支持多个根节点

3. API类型不同

        

vue2vue2使用的是选项型API,选项型API使用选项 (如:data,methods等) 来进行分割代码
vue3vue3使用的是组合式API,组合型API可以使用定义数据变量和方法来进行分割代码

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

        

vue2vue2中我们要想定义一个变量要将变量放在data中,方法放在methods中
vue3vue3我们要想定义一个变量或者方法,使用setup语法糖或者setup()来定义方法或变量
// vue2

<script>
    // 定义变量
    data(){
        return {
            username:'张三'
        }
    },

    // 定义方法
    method:{
        getUserName(){
            console.log(this.username) // 张三
        }
    }

</script>


// vue3

<script setup>

const username = '张三'
const getUsername= () => {
    console.log(username)
}

</script>

         

5. 父子传参不同

        

vue2父传子使用 props ,子传父使用 this.$emit()
vue3父传子使用 defineProps,子传父使用 defineEmits

6.生命周期钩子不同

        

生命周期vue2vue3
创建组件前beforeCreate setup
创建组件后created setup
组件挂载前beforeMountonBeforeMount
组件挂载后mountedonMounted 
组件更新前beforeUpdateonBeforeUpdate 
组件更新后updated onUpdated 
组件销毁前beforeDestroyonBeforeUnmount
组件销毁后destroyed onUnmounted

7. 指令和插槽不同

            

vue2solt插槽可以当做标签来使用,v-for和v-if不可以一起使用,容易发生冲突
vue3插槽必须使用v-solt形式使用,v-for和v-if之间不会有冲突,v-for会把v-if当做一个判断条件,不会发生冲突

当然还有很多不同点,以上都是常见的不同点,如果有知道的小伙伴可以在下方进行评论!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值