本质上没有区别,只是使用形式上有变化
在vue2中,template下面必须有一个根节点div,否则会报错警告。而vue3中不再需要,相当于少写了一层。
Vue2 是 选项式API(Option API),一个逻辑会在文件不同位置(data、props、computed、watch、生命周期函数等)。Vue3 组合式API(Composition API)可是把所有的内容都放到setup函数中,需要按需引入。配合setup语法糖会变得更简洁。
vue2 响应式原理基础是Object.defineProperty;Vue3 响应式原理基础是 Proxy。
Object.defineProperty无法监听对象或数组新增、删除的元素。而 Vue2 方案是针对常用数组原型方法push、pop、shift、unshift、splice、sort、reverse进行了重写;提供Vue.set监听对象/数组新增属性。
而vue采用的proxy是ES6新特性,通过第2个参数handler拦截目标对象的行为。相较于Object.defineProperty提供语言全范围的响应能力,消除了局限性。但在兼容性上不支持ie11以下的版本,原因也很简单,ie11以下不支持proxy