Skip to content

基本回答点

1. 用组合式 api 替换选项式 api,方便逻辑更加的聚合

2. 一些细节改变

具体细节:

  • 因为改成组合式 api 所以没有 this
  • 生命周期的差异
  • vue3 中 v-if 高于 v-for 的优先级
  • 根实例的创建从 new Vue 变成了 createApp 方法
  • 一些全局注册,比如 mixin,注册全局组件, use 改成了用 app 实例调用,而不是 vue 类调用
  • 新增了传送门 teleport 组件
  • vue3 可以有多个根节点

3. 响应式原理改成了用 proxy,解决了数组无法通过下标修改,无法监听到对象属性的新增和删除的问题。也提升了响应式的效率

深入回答:

  • vue3 并不是完全抛弃了 defineProperty,通过 reactive 定义的响应式数据使用 proxy 包装出来,而 ref 还是用的 defineProperty 去给一个空对象,定义了一个 value 属性来做的响应式

4. 支持按需引入,可以更好 tree-shaking

5. 性能优化,增加了静态节点标记。会标记静态节点,不对静态节点进行比对。从而增加效率

深入回答:

  • 文本内容为变量会标记为 1,class 属性为动态会标记为 2,如果静态则不标记跳过比对

进阶回答:

  • vue3 不推荐使用 mixin 进行复用逻辑提取,而是推荐写成 hook
  • v-model 应用于组件时,监听的事件和传递的值的改变
  • ts 更好的配合

上次更新时间:

Keep Reading, Keep Writing, Keep Coding