「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」。
vue3新特性
vue3相对于vue2新增了很多特性。 (1)重新实现了数据响应式,在vue2中使用了ES5的Object.defineProperty,在vue3中使用了ES6中的proxy。
(2)源码使用了typescript进行重新编写,从而能更好地类型推导。
(3)虚拟DOM新算法,更快,更小。
(4)提供了compositon api,能更好地逻辑复用与代码组织。
(5)可以根据需求自定义各种各样的渲染器。
(6)模板中可以有多个根元素。
vue2和vue3的响应式原理
vue2的响应式原理
vue2中使用了ES5的Object.defineProperty方法来实现响应式数据。
缺点:
(1)无法监测到对象属性的动态添加和删除
vue2中提供了Vue.set方法用于动态给对象添加属性,提供了Vue.delete方法用于动态删除对象的属性。
(2)无法监测到数组下标和length属性的变更
重写vue中的数组的方法,用于检测数组的变更。
vue3的响应式原理
vue3中使用ES6的proxy语法来实现响应式数据。 优点:
(1)可以监测到代理对象属性的动态添加和删除。
(2)可以监测到数组的下标和length属性的变更。
缺点:
ES6的proxy语法对于低版本的浏览器不支持,IE11。
选项API和组合API
选项API
在vue2中使用的是options api。
data选项写数据,methods选项写函数...,一个功能逻辑的代码分散。
优点:易于学习和使用,写代码的位置已经约定好。
缺点:代码组织性差,相似的逻辑代码不便于复用,逻辑复杂代码多了不好阅读。
虽然提供mixins用来封装逻辑,但是出现数据函数覆盖的概率很大,不好维护。
组合API
在vue3中使用的是composition api。
一个功能逻辑的代码组织在一起,包含数据,函数等等。
优点:功能逻辑复杂繁多情况下,各个功能逻辑代码组织在一起,便于阅读和维护。
缺点:需要有良好的代码组织能力和拆分逻辑能力。
vue3也支持vue2.x选项API写法。