vue3和vue2的区别
双向绑定
双向绑定的方法不一样
: Vue3 使用了new Proxy,Vue2 使用了Object.defineProperty
响应式系统提升
:Vue3中响应式数据原理改成proxy,可监听动态新增删除属性,以及数组变化
代码组织
Vue2
是选项式 API,Vue3 向下兼容,可以是 选项式 也可以 是组合式,语法糖 setup
编译优化
编译优化
:vue2通过标记静态根节点优化diff,Vue3 标记和提升所有静态根节点,diff的时候只需要对比动态节点内容
打包体积优化
打包体积优化
:移除了一些不常用的api(inline-template、filter)
生命周期的变化
- beforeDestroy -> beforeUnmount,destroyed -> unmounted
- beforeCreate 和 created 被 setup() 函数本身替代
其它
$set
在Vue3中没有,因为new Proxy
不需要
Vue2
v-for 优先级大于 v-if,Vue3 是 v-if 大于 v-for源码组织方式变化
:使用 TS 重写Vue3
的 template 模板支持多个根标签- Vuex状态管理:创建实例的方式改变,Vue2为new Store , Vue3为createStore
- Route 获取页面实例与路由信息:vue2通过this获取router实例,vue3通过使用 getCurrentInstance/ userRoute和userRouter方法获取当前组件实例
- Props 的使用变化:vue2 通过 this 获取 props 里面的内容,vue3 直接通过 props
- 父子组件传值:vue3 在向父组件传回数据时,如使用的自定义名称,如 backData,则需要在 emits 中定义一下