说一下Vue2和Vue3的区别
源码的变化
- vue2用js,
- vue3用ts, 所以Vue3更好的支持TS
写法上变化
- Vue2: 选项式API;
- Vue3: 组合式API
响应式实现
- Vue2是definePropety
- Vue3是proxy
生命周期
Vue2: beforeCreate、created、beforMount、munted、beforeUpdate、updated、beforeDestroy、destroyed;
Vue3: setup、onBeforeMount、onMounted、onBeforeUpdate、onUpdated、onBeforeUnmount、onUnmounted;
实例化
- Vue2:
new Vue()
- Vue3:
createApp()
组件层面
- Vue3 templete支持多个根标签 Fragments
- Vue3 新增Teleport组件,将组件内部模板挂载到想挂的DOM上
- Vue3 css支持v-bind 绑定变量
- Vue3 新增异步组件 defineAsyncComponent 声明
- Vue3 新增宏:defineEmits、defineModel、defineProps、defineOptions、defineSlots
公共逻辑抽离
- Vue2: mixin
- Vue3: hooks
v-if 和 v-for 优先级的不同
- vue2: v-for比v-if优先
- Vue3: v-if比v-for优先
- 一般不建议v-if和v-for一起使用
diff 算法优化
- vue3 有静态标记
打包体积优化
- Vue更好支持Tree shaking