此页内容

约 263 字小于 1 分钟

2022-04-24

提问

vue2和vue3的区别

区别

  • 响应式原理

    vue2 通过 Object.defineProperties() 实现数据劫持,结合 发布/订阅模式,将数据变更通知给Watcher,实现响应式。 vue3 通过 Proxy 做数据劫持,实现响应式对象,同时也保留了 getter/setter 实现 ref()

  • 使用 工厂函数 createApp() 代替 构造函数 new Vue() 创建应用实例

  • 使用 app.config.globalProperties 代替 Vue.prototype 用于添加全局属性

  • 移除了 Vue.extend

  • v-model 使用 modelValue/emit 代替了 value/input 的实现

  • key 现在不需要添加在 v-if v-else v-else-if 上,Vue会自己生成,且可以添加在 <template> 上。

  • v-if 的优先级总是高于v-for (vue2是反过来的)

  • 移除了 filter 过滤器

  • 自定义指令使用了全新的生命周期

  • 移除了 $children

  • $listener 合并到了 $attrs 中, $attrs 也包含了 classstyle

  • 使用 beforeUnmountunmounted 代替 beforeDestroydestroyed

  • 新增了 setup() 以及 组合式API

  • 新增内置组件 <Teleport><Suspense>