1.vue2使用mixins进行代码逻辑共享,mixins也是由一大堆options组成,如果有多个mixins则可能造成命名冲突等问题。vue3可以通过hook函数 将一部分独立的逻辑抽离出去,并且也是响应式的。
2.vue3支持碎片化可以在template中写多个根,vue2只能有一个。
3.VUE3是基于typescipt编写的,拥有更好的ts兼容性。
4.Vue2 使用的是 Object.defineProperty() 来实现的响应式,它需要递归的对所有的属性进行拦截,重写 getter 和 setter 函数。而且只能劫持已有的属性,对于新增属性和删除属性是拦截不到的,必须额外通过 $set、 $delete 这些 API 来手动触发页面的更新。而 Vue3 使用 ES6 的 proxy 代理的方式来处理响应式。 它和 Vue2 的区别在于,它不需要对所有属性重写 getter 和 setter,还能监听到属性的删除和新增,而且能够直接监听数组的变化,不需要对数组进行特殊的处理。