Vue2和vue3的区别
1.生命周期钩子不同
setup开始创建组件
onbeforeMount组件挂载页面之前执行
onmunted组件挂载到页面之后执行
onbeforeUpdate组件更新之前
onupdated组件更新之后
注意:vue3.x生命周期在调用前需要先引入,除了上诉的钩子函数外,还增加了onRendertraced和onrendertriggered
2.数据双向绑定原理不同
vue3中使用es6的proxy api对数据代理
vue3提供的proxy api的优势在于
1.definepropety只能监听某个属性。不能对全对象监听
2.可以省去for..in,闭包等内容来 提升效率(直接绑定整个对象即可)
3.可以监听数组,不在单独对数组做特异性处理,可以检测到数组内部数据的变化
3.定义变量和方法不同
vue3中使用一个新的setup方法
vue3提供的setup方法在组件初始化构造的时候触发,使用一下三个步骤建立反应性数据
1.从vue引入reactive
2.使用eactive方法来声明数据为响应式数据
3.使用setup方法返回响应式数据,从而template可以获取这些响应式数据
4.指令和插槽的使用不同
将v-if当做v-for的一个判断语句。不会相互冲突。
移除keycode作为v-on的修饰符,不支持config.keycdes
移除v-on.natives修饰符
移除过滤器fiter
不允许直接使用slot,正确格式是v-slot
5.api类型不同
vue3组合型api(使用方法进行分割,显得简便)
vue2选项型api(在代码分割不同的属性)
6.是否支持碎片
vue2不支持
vue3可以拥有多个根节点
7.父子之间传参不同
vue2中父传子:子组件通过prop接收
父传子:子组件中通过$emit向父组件触发一个监听方法,传递一个参数
vue3使用 setup中的第二个参数content对象中有emit,只需要在setup接收第二个参数中使用分解对象法取出emit就可以在setup方法中随意使用了
8.main.js文件不同
vue2使用圆形的总是进行操作,引进的是构造函数,vue3需要结构的形式进行操作,引入的是工厂函数,vue3中的app组件中可以没用跟标签