vue3 vue2

vue3.0是如何变快的?

diff算法优化

  • vue2的虚拟dom是进行全局的对比。
  • vue3 新增了静态标记(patchFlag)
在与上次虚拟节点进行比较的时候,只对比带有patch Flag的节点,并且可以通过flag的信息得知当前节点要对比的具体内容。

hoistStatic 静态提升

vue2中无论元素是否参与更新,每次都会被重新创建。
vue3对于不参与更新的元素,只会被创建一次,之后在每次选人时候被不停的复用

cacheHandlers 时间侦听缓存

默认情况下onclick 会被视为动态绑定,所以每次都会去追踪它的变化。
但是因为是同一个函数,没有必要追踪变化,直接缓存起来复用即可。

componsition API & option API 混合使用。

本质将compositon API的方法和数据注入到option API中


pic1.png

vue3的ref

  • ref 与reactive一样 ,都是实现响应式数据的方法。
  • 由于reactive必须传递一个对象,所以导致在企业开发中,如果我们只想让某个变量实现响应式的时候变得非常麻烦。所以vue3提供了ref方法,实现简单的数据监听。
  • ref本质:
    ref的本质还是reactive,系统会自动根据传入的值将他转换成ref(xx)-->reactive({value:xx})。
  • 验证:打印ref的值,可以发现会有一个私有属_isRef:true.
  • ref注意点:
  • 在Vue中使用的ref值不用通过value获取。
  • 在js中使用的ref值必须通过value获取。

vue3的reactive

  • reactive是vue3中提供的响应数据的方法。
  • vue3中是通过proxy实现的,vue2中是通过defineProperty实现。
  • reacttive注意点:
    • reactive的参数必须是对象(json或arr)
    • 如果给reactive传递了其他对象
      +默认情况下回修改对象,界面不会自动更新。
      +如果想更新,可以通过重新赋值的方式。

setup执行时机

  • setup-->beforeCreated -->created
    settup注意点:由于在setup函数中,还没有执行created生命周期。所以在这个周期是不能是用data和methods的。
  • vue为了避免我们错误的使用,所以直接将setup函数中的this改为undefind.
  • setup函数是同步,不支持异步的。


    pic2.png

递归监听

  • 默认情况下,无论是ref还是reactive都是递归监听。
  • 存在的问题:如果数据非常大,则会非常消耗性能。

非递归监听

  • shallowRef shallowReactive
  • 注意点:如果使用shallowRef创建的数据,那么vue监听的是.value的变化,并不是第一层的变化。
  • triggerRef
    -注意点:vue只提供了triggerRef的主动更新,并没有提供triggerReactive的主动
    更新方法,如果是reactive类型的数据,则无法主动出发更新的。

递归监听&非递归监听使用场景。

  • 一般情况下使用递归监听就可以了,当时在数据量比较大的时候,才需要使用shallowRef shallowReactive 。

shallowRef的本质

  • shallowRef的本质就是shallowReactive,所以通过shallowRef创建的数据,实际上监听的是value的变化。

toRaw方法

  • 从ref或者relative中的到原始的数据或引用对象。
  • 说明:reactive&ref类型的特点。
    每次修改都会被更新,都会导致Ui界面的更新。这样是非常消耗性能的,但是有一些操作我们并不需要更新界面,这个时候可以通过toRaw拿到原始数据,对原始数据进行修改,就避免了更新UI界面.

markRaw方法

使用该方法就是告诉vue当前数据永远不要被追踪。

ref&toRef的比较

  • ref (本质复制了原始数据) 如果通过ref将某一个对象中的属性变为响应式的数据,我们修改响应式数据是不会影响原始数据的。
  • toRef (本质是引用了原始数据) 如果通过ref将某一个对象中的属性变为响应式的数据,我们修改响应式数据会影响原始数据的。但是如果响应式的数据是通过toref创建的,是不会触发UI界面的更新,
ref--->复制数据 不影响原始数据 UI更新
toRef---> 引用数据  会影响原始数据 UI不更新

customRef

  • 返回一个ref对象,可以显示的控制依赖追踪和触发响应。


    1600999867950.jpg
  • 应用场景 可以使用自定义ref解决。


    WX20200925-103307@2x.png

注明:以上本人学习笔记,有误的地方欢迎指正。共同学习,一起进步。

最后编辑于:2024-09-27 20:38:51


喜欢的朋友记得点赞、收藏、关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1559245.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

CRM客户关系管理系统全面解析

CRM(Customer Relationship Management)客户关系管理系统是一种以客户为中心的商业策略和技术框架,旨在通过对客户资料的收集、管理和分析,提升企业的市场竞争力,从而实现业务增长和客户满意度的提高。以下是对CRM系统…

移动美容师是什么?职业前景如何?连锁美业门店管理系统拓客系统Java源码

移动美容师是一种为客户提供上门美容服务的专业人士。与传统美容院或美容店不同,移动美容师可以根据客户的需求和预约,在客户指定的时间和地点进行美容护理、美甲、美发等项目。 这种服务形式为顾客提供了更加便捷、个性化的美容体验,同时也…

华为OD机试 - 采样过滤(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

YOLO11涨点优化:注意力魔改 | 双重注意力机制DoubleAttention,有效地捕获图像中不同位置和不同特征的重要性

💡💡💡本文改进内容: DoubleAttention该网络结构采用双重注意力机制,包括Spatial Attention和Channel Attention,有效地捕获图像中不同位置和不同特征的重要性 💡💡💡本文改进:分别加入到YOLO11的backbone、neck、detect,助力涨点 改进1结构图: 改进2结构图…

STM32—W25Q64

1.W25Q64简介 W25Oxx系列是一种低成本、小型化、使用简单的非易失性存储器 易失性存储器 般就是SRAM、DRAM等非易失性存储器 般就是E2PROM、Flash等常应用于数据存储、字库存储、固件程序存储等场景存储介质:Nor Flash(闪存)时钟频率:80MHz / 160MHz(…

C语言 | 第十三章 | 二维数组 冒泡排序 字符串指针 断点调试

P 120 数组应用案例 2023/1/29 一、应用案例 案例一&#xff1a;创建一个char类型的26个元素的数组&#xff0c;分别 放置’A’-Z‘。使用for循环访问所有元素并打印出来。提示&#xff1a;字符数据运算 ‘A’1 -> ‘B’ #include<stdio.h>void main(){/*创建一个c…

Mysql中创建用户并设置任何主机连接

Mysql中创建用户并设置任何主机连接 文章目录 Mysql中创建用户并设置任何主机连接背景解决方式 背景 在linux上安装mysql,默认用户是root,但是用navicat连接不了,必须要用ssh隧道连接,现在想用任何主机只要输入账号密码之后就可以连接 解决方式 #创建一个指定用户和IP链接的用…

通过祖先序列重建辅助工程化UDP-糖基转移酶-文献精读64

Engineering the Substrate Specificity of UDP-Glycosyltransferases for Synthesizing Triterpenoid Glycosides with a Linear Trisaccharide as Aided by Ancestral Sequence Reconstruction 通过祖先序列重建辅助工程化UDP-糖基转移酶的底物特异性&#xff0c;用于合成具…

股市有人吹的“哨音”也应倾听

国庆节前&#xff0c;深圳东方港湾投资管理股份有限公司董事长但斌发微博警告说&#xff1a;“这样暴涨&#xff0c;必有暴跌&#xff0c;这次如果再被套住&#xff0c;该动员的力量都动员了解套将遥遥无期”他这样警告&#xff0c;就与新冠病毒刚在武汉爆发时的“吹哨人”起的…

重头开始嵌入式第四十六天(硬件 ARM裸机开发 ADC 中断 UART)

目录 ADC使用 1.什么是ADC&#xff1f; 一、功能 二、工作原理 三、参数指标 四、应用领域 2.如何配置s3c2440中的adc&#xff1f; 中断 1.什么是中断&#xff1f; 一、定义 二、中断的作用 三、中断的类型 四、中断处理过程 2.如何配置中断&#xff1f; UART 1…

一站式服务,产业园运营让创业更轻松!

一站式服务&#xff0c;也被称为“一条龙服务”或“全流程服务”&#xff0c;它是指企业或机构为了满足客户或用户的需求&#xff0c;整合内部资源&#xff0c;通过优化服务流程、提高服务效率&#xff0c;从而提供从咨询、受理、办理到反馈等各个环节的完整、连续、高效的服务…

汽车主机厂主数据管理中一物多码或多码一物问题的具体表现有哪些?

数据入口多导致重复编码 在汽车主机厂的主数据管理中&#xff0c;由于存在多个数据入口&#xff0c;不同部门或环节可能会独立进行数据录入。这就容易出现一物多码或多码一物的情况。例如&#xff0c;采购部门、生产部门、物流部门等可能各自采用不同的编码体系来标识同一种汽…

车辆路径规划问题(VRP)优化方案

车辆路径规划问题&#xff08;VRP&#xff09;优化方案 车辆路径规划问题&#xff08;Vehicle Routing Problem, VRP&#xff09;是物流领域中一个经典的组合优化问题&#xff0c;目标是在满足客户需求的情况下&#xff0c;找到一组车辆的最优配送路径&#xff0c;以最小化总的…

PMP11月考试中文报名10月9日开始!

经过PMI与中国国际人才交流基金会的联合研究决定&#xff0c;2024年度第四期PMI认证考试将于11月30日进行。 为了让各位考生能够充分准备&#xff0c;我们特此梳理了本次考试的具体安排及注意事项&#xff0c;请务必仔细阅读&#xff01; 报名时间安排&#xff1a; &#xf…

使用Python批量修改文件修改日期为随机的6到8月份

使用Python批量修改文件修改日期为随机的6到8月份 每当雪花飘起的时候&#xff0c;总有一股抹不去的情节&#xff0c;会想起儿时雪天的记忆&#xff0c;虽然模糊但也清晰。那时每年的冬季很冷&#xff0c;但依然喜欢飘雪的日子&#xff0c;看着满天迷蒙飘舞的雪花总有想不完的心…

microsoft edge浏览器卡死问题

win11经常遇到microsoft edge浏览器卡死的情况&#xff0c;有时候是一会没用浏览器就全部卡死&#xff0c;有时候是锁屏或者电脑休眠浏览器就不能用&#xff0c;找了很多的办法都没好使&#xff0c;用以下方法好使了&#xff1a; edge浏览器中打开 edge://settings/system 把 …

架设传奇SF时提示此服务器满员,GEE引擎点开始游戏弹出服务器满员的解决方法

昨天一个朋友在架设GEE的传奇服务端时遇到一个奇怪的问题&#xff0c;就是在服务器外网架设时&#xff0c;建好角色点开始游戏提示此服务器满员&#xff0c;这个问题一般比较少见&#xff0c;而且出现的话一般都是GEE引擎的版本。 他折腾了半天&#xff0c;一直没进游戏&#x…

apt update报错:ModuleNotFoundError: No module named ‘apt_pkg‘(可能是默认python版本被改坏了)

文章目录 错误信息分析1. 确保 apt_pkg 模块已安装2. 检查 Python 版本3. 重新配置 Python4. 修复损坏的依赖5. 检查环境变量 尝试 错误信息 (base) rootkyai:/ky/tml/ky_ai_get_server_info# apt update 获取:1 file:/var/cuda-repo-cross-aarch64-ubuntu2004-11-4-local InR…

简易入门:使用Docke 部署一个tomcat服务

简易入门&#xff1a;使用Docke 部署一个tomcat服务 # 拉取 >docker pull tomcat:9.0# 后台运行容器&#xff0c;端口映射为8080. -p 宿主机端口:容器端口 >docker run -d --name tomcat-c-01 -p 8080:8080 tomcat:9.0# 查看容器id >docker ps CONTAINER ID IMAG…

Go语言对接微信支付与退款全流程指南

在互联网技术日益发展的今天&#xff0c;线上支付已成为不可或缺的一部分。作为一门简洁高效的编程语言&#xff0c;Go&#xff08;又称Golang&#xff09;凭借其强大的并发处理能力和高效性能&#xff0c;在后端开发领域越来越受到开发者的青睐。本文将详细介绍如何使用Go语言…