先说显式的一些改变
- 因为改成组合式api所有没有this
- 生命周期可以用setup替代before create和created
- vue3中的v-if高于v-for的优先级
- 创建根的实例从new app变成了createApp方法
- 一些全局注册,比如mixin,注册全局组件,use改成了用app实例调用,而不是vue类调用
- 新增了teleport组件
- template模版可以不仅仅包含一个根div
更深层次的一些改变
- 响应式原理改用了 proxy,解决了数组无法通过下标修改,无法监听到对象属性的新增和删除的问题,也提升了响应式的效率。
- 可以额外叙述vue3并不是完全抛弃了defineProperty,通过reactive定义的响应式数据使用proxy包装出来,而ref还是用的defineProperty去给一个空对象,定义了一个value属性来做的响应式
- 组合式API的写法下,源码改成了函数式编程,方便按需引入,因为tree-shaking功能必须配合按需引入写法,所以vue3更好地配合tree-shaking能让打包体积更小