1.双向数据绑定的方式不同
vue2是采用ES5的object.definePropert()对数据进行劫持,结合发布订阅和观察者模式进行的
vue3是采用ES6的Proxy的数据代理来对数据进行代理,修复了v2中对象和数组的属性添加修改的问题
2.根节点数量不同
vue2中组件只能有一个根节点,
vue3中可以右多个根节点,解决了多个div嵌套的问题
3.vue3中增加了Composition API ,在script标签上添加setup 或者调用setup()函数
vue2中只有optiosAPI
4.生命周期钩子少许变化
vue2中的destoryed钩子在vue3中为unmounted
5.组件传值不太一样
vue3中在子组件中使用emits拦截事件,props拦截属性;
vue2中使用$emit()派发事件,父组件使用$on监听,
6.定义全局变量的方法不一样
vue2中使用Vue.prototype.$http = axios
vue3中使用app.config.globalProperties.$http = axios
7.创建vue实例的方式不一样
vue2中使用new Vue()的方式,来创建实例
vue3中使用createApp()方法来创建实例
8.插槽的写法不一样
vue2中父组件中使用 slot-scope=""
vue3中使用v-slot=“” 或者#代替
9.vue3中新增了teleport穿梭组件,实现组件的穿梭;比如dialog遮罩层可以直接挂到body上
10.vue3中移除了filter过滤器
官方建议直接使用计算属性或者方法调用来实现过滤
11.vue3中移除了$childern属性
不可以使用$childern来获取子组件,而建议使用ref和this.$refs来获取子组件上的属性和方法
12.v-if和v-for优先级
在v2中如果同时使用v-for 和 v-if 那么v-for的优先级是高于 v-if 的
v3中v-if 始终高于 v-for但是还是不建议一起使用