1.生命周期的区别
| vue3 | vue2 | 生命周期 |
|---|---|---|
| setup() | beforCreate() | 创建前 |
| setup() | ceatd() | 创建后 |
| onBeforeMount() | beforMount() | 挂载前 |
| onMounted() | mounted() | 挂载后 |
| onBeforeUpdate() | beforUpdate() | 更新前 |
| onUpdated() | updated() | 更新后 |
| onBeforeUnmount() | beforDestroy() | 销毁前 |
| onUnmounted() | destroyed() | 销毁后 |
2.选项式API和组合式API
vue2用的是选项式API(
Option API),将数据和函数集中起来处理,将功能点切割了当逻辑复杂的时候不利于代码阅读
vue3用的
Composition API这是一种新的组织组件代码的方式,可以更好地组织和重用逻辑代码
3.v-if和v-for的优先级
在vue2里v-for的优先级要高于v-if的,在vue2里v-if和v-for是可以一起使用
在vue3里v-if的优先级要高于v-for的,在vue3里v-if和v-for是不可以一起使用,如果要一起使用要添加一个外部标签进行使用
4.TypeScript 支持
Vue3 由TS重写,相对于 Vue2 有更好地
TypeScript支持
Vue2
Option API中 option 是个简单对象,而TS是一种类型系统,面向对象的语法,不是特别匹配
5.根节点
Vue3支持在
template中写多个根
Vue2在
template中只能写一个
6.响应式原理
Vue3 响应式原理基础是
Proxy
Proxy是ES6新特性,通过第2个参数handler拦截目标对象的行为。相较于Object.defineProperty提供语言全范围的响应能力,消除了局限性。但在兼容性上放弃了(IE11以下)
Vue2 响应式原理基础是
Object.defineProperty
Object.defineProperty基本用法:直接在一个对象上定义新的属性或修改现有的属性,并返回对象