VUE2和VUE3的区别

  1. 数据响应式的实现不同

vue2中的数据响应式是根据Object,defineProperty实现的,使用这个方法每次只能对一个对象中的一个数据进行数据劫持,若需要将对象中的所有属性都设置为响应式的,则需要递归遍历实现深层次的监听,以此对对象中的数据进行数据劫持,在性能方面表现很差。

vue3中的数据响应式是根据proxy代理实现的,proxy的监听可以针对一整个对象,无需递归遍历,性能更好。

注:数据劫持主要通过上述监听方法中的get和set属性进行实现的

若对象中的某个属性被访问了,会在get方法中进行劫持,在get属性中,将依赖该属性的元素进行收集,统一存放到一个数组中。

当属性值发生改变了,会被set方法进行劫持,在该方法中通知所有依赖该属性的元素进行更新

从而实现数据响应式

  1. 生命周期命名不同

V3中将beforeCreat和created合并成一个setup钩子

  1. 语法API

V2使用的是选项式API,最直观的感受就是写法的局限性很大,需要按照他提供的写法进行书写,由于它的数据和逻辑分散在各个选项中,当组件的逻辑变得复杂时,很难进行维护和理解

V3使用的是组合式API,写法更加灵活,更偏向原生的写法。而且它可以将相同功能的代码编写在一起,可读性和复用性更好

  1. 复用函数

V2中一般通过mixin实现某些功能的复用,会导致命名冲突,被覆盖。

V3可以通过自定义创建一个Hook函数实现功能复用,在需要进行使用的地方调用即可,也会不出现命名冲突的问题。

相关推荐
码界奇点2 分钟前
Java Web学习 第1篇前端基石HTML 入门与核心概念解析
java·前端·学习·xhtml
云枫晖7 分钟前
Webpack系列-开发环境
前端·webpack
Rverdoser12 分钟前
制作网站的价格一般由什么组成
前端·git·github
拉不动的猪12 分钟前
深入理解 JavaScript 中的静态属性、原型属性与实例属性
前端·javascript·面试
linda261820 分钟前
链接形式与跳转逻辑总览
前端·javascript
移远通信24 分钟前
常见问题解答
开发语言·php
怪可爱的地球人25 分钟前
骨架屏
前端
用户6778471506228 分钟前
前端将html导出为word文件
前端
初见无风28 分钟前
3.1 Lua代码中的元表与元方法
开发语言·lua·lua5.4
前端付豪30 分钟前
如何使用 Vuex 设计你的数据流
前端·javascript·vue.js