• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
EasyCodeUp
博客园    首页    新随笔    联系   管理    订阅  订阅
vue2与vue3的区别

一、双向数据绑定原理的区别

vue2 的双向数据绑定是利用ES5 的一个APIObject.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的

vue3发生了改变,使用proxy替换Object.defineProerty,使用Proxy的优势

1、可直接监听数组类型的数据变化

2、性能的提升

3、监听的目标为对象本身,不需要像Object.defineProperty一样遍历每个属性,有一定的性能提升

4、可直接实现对象属性的新增/删除

二、根节点的不同

vue3在组件中支持多个根节点

vue2

<template>
  <div>
   <h1></h1>
  <div>
</template>

vue3

<template>
  <div>
   <h1></h1>
  <div>
  <div>
   <span></span>
  <div>
</template>

三、vue3使用了Composition API (组合api)

在vue2中是使用的Options API,这种写法不方便我们的阅读和交流,逻辑过于分散。

vue2(数据和方法分开)

<script>
 export default {
   // 数据
  data(){
   return{};
  },
  mounted(){},
  // 方法
  methods:{},
  computed:{}
}
</script>

vue3(数据和方法都在setup里面)

<script>
 export default {
  setup(){
   // 数据和方法都写这里,更简洁
  }
}
</script>

四、生命周期的变化

beforeCreate  -> setup()	开始创建组件之前,创建的是data和method
created       -> setup()
beforeMount   -> onBeforeMount	组件挂载到节点上之前执行的函数。
mounted       -> onMounted	组件挂载完成后执行的函数
beforeUpdate  -> onBeforeUpdate	组件更新之前执行的函数。
updated       -> onUpdated	组件更新完成之后执行的函数。
beforeDestroy -> onBeforeUnmount	组件挂载到节点上之前执行的函数。
destroyed     -> onUnmounted	组件卸载之前执行的函数。
activated     -> onActivated	组件卸载完成后执行的函数
deactivated   -> onDeactivated  在组件切换中老组件消失的时候执行

五、diff算法

vue2

diff算法就是进行虚拟节点对比,并返回一个patch对象,用来存储两个节点不同的地方,最后用patch记录的消息去局部更新Dom。
diff算法会比较每一个vnode,而对于一些不参与更新的元素,进行比较是有点消耗性能的。

vue3

diff算法在初始化的时候会给每个虚拟节点添加一个patchFlags,patchFlags就是优化的标识。
只会比较patchFlags发生变化的vnode,进行更新视图,对于没有变化的元素做静态标记,在渲染的时候直接复用。

六、v-if 和 v-for的优先级

<div v-if="index == 1" v-for="(item,index) in arr" :key="index">{{item}}
</div>

vue2

我们最好不要把v-if和v-for同时用在一个元素上,这样会带来性能的浪费(每次都要先渲染才会进行条件判断)

v-for 优先于 v-if 生效

vue3

v-if 优先于 v-for 生效

vue中会给我们报警告:意思就是:属性“index”在渲染期间被访问,但未在实例上定义(v-if先进行判断,但是这时候v-for还没有渲染,所以index是找不到的)

引自:https://zhuanlan.zhihu.com/p/530066087

posted on 2023-11-29 15:55  逍遥自成一派  阅读(63)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3