Vue2 和Vue3 有什么区别

一. 根节点不同:

  1. vue2中必须要有根标签
  2. vue3中可以没有根标签,会默认将多个根标签包裹在一个fragement虚拟标签中,有利于减少内存。

二. 组合式API和选项式API:

  1. 在vue2中采用选项式API,将数据和函数集中起来处理,将功能点切割了当逻辑复杂的时候不利于代码阅读。
  2. 在vue3中采用组合式API,将同一个功能的代码集中起来处理,使得代码更加有序,有利于代码的书写和维护。

三. v-if和v-for的优先级:

  1. 在vue2中v-for的优先级高于v-if,可以放在一起使用,但是不建议这么做,会带来性能上的浪费
  2. 在vue3中v-if的优先级高于v-for,一起使用会报错。可以通过在外部添加一个标签,将v-for移到外层

四. diff算法不同:


vue2中的diff算法:

遍历每一个虚拟节点,进行虚拟节点对比,并返回一个patch对象,用来存储两个节点不同的地方。
用patch记录的消息去更新dom
缺点:比较每一个节点,而对于一些不参与更新的元素,进行比较是有点消耗性能的。
特点:特别要提一下Vue的patch是即时的,并不是打包所有修改最后一起操作DOM,也就是在vue中边记录变更新。(React则是将更新放入队列后集中处理)。
vue3中的diff算法:

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

五. 响应式原理不同

vue2通过Object.definedProperty()的get()和set()来做数据劫持、结合和发布订阅者模式来实现,Object.definedProperty()会遍历每一个属性。
vue3通过proxy代理的方式实现.
proxy的优势:不需要像Object.definedProperty()的那样遍历每一个属性,有一定的性能提升proxy可以理解为在目标对象之前架设一层“拦截”,外界对该对象的访问都必须通过这一层拦截。这个拦截可以对外界的访问进行过滤和改写。
当属性过多的时候利用Object.definedProperty()要通过遍历的方式监听每一个属性。利用proxy则不需要遍历,会自动监听所有属性,有利于性能的提升

原创作者: 吴小糖
创作时间:2024.1.24

 

相关推荐

  1. Vue2 Vue3 什么区别

    2024-01-25 14:02:01       30 阅读
  2. 【经典面试题】Vue3Vue2什么区别

    2024-01-25 14:02:01       12 阅读
  3. vue3vue2区别什么

    2024-01-25 14:02:01       21 阅读
  4. vuejQuery什么区别

    2024-01-25 14:02:01       38 阅读
  5. ReactVue什么区别

    2024-01-25 14:02:01       8 阅读
  6. vuejQuery什么区别

    2024-01-25 14:02:01       7 阅读
  7. vue2vue3区别

    2024-01-25 14:02:01       33 阅读
  8. Vue3Vue2区别

    2024-01-25 14:02:01       32 阅读
  9. Vue2Vue3区别

    2024-01-25 14:02:01       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 14:02:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 14:02:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 14:02:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 14:02:01       20 阅读

热门阅读

  1. ros中调用opencv绘图测试

    2024-01-25 14:02:01       35 阅读
  2. CaptureRequest部分参数说明

    2024-01-25 14:02:01       39 阅读
  3. 要在 Ubuntu 上开启 SSH(Secure Shell)服务器

    2024-01-25 14:02:01       31 阅读
  4. C++做vlc音视频

    2024-01-25 14:02:01       32 阅读
  5. C++区间覆盖(贪心算法)

    2024-01-25 14:02:01       35 阅读
  6. 【node】关于npm、yarn、npx的区别与使用

    2024-01-25 14:02:01       42 阅读
  7. c#模板设计模式

    2024-01-25 14:02:01       32 阅读