前端学习笔记—Vue3特性

news2024/12/28 9:27:46

一、 Vue3与Vite构建工具简介

image.png
image.png

image.png

image.png
Vite构建工具(其他的打包工具有webpack,grunt,gulp)
image.png
image.png
构建

二、创建Vue3项目

  • vite在TypeScript结合使用上,直接开箱即用,不需要额外配置。
  • Vue3语法兼容Vue2语法。Vue3的setup与Vue2的data、methods可以同时存在使用,但是不建议这样操作,优先使用setup组合式返回值。setup是先于beforeCreate、data等钩子执行的,所以在data中可以通过this读取出setup返回值,反之不可。


    构建1
构建vue3项目
image.png
实操创建
依赖添加异常,需要检查网络或代理时,尝试使用国内镜像源,这里经常会有小坑,更换为国内镜像源以提高稳定性:

1使用淘宝镜像:

npm config set registry https://registry.npmmirror.com

2.使用腾讯镜像:

npm config set registry https://mirrors.cloud.tencent.com/npm/

3.使用华为镜像:

npm config set registry https://repo.huaweicloud.com/repository/npm/

4.检查当前镜像源:

npm config get registry

三、Vue2与Vue3项目api区别

  • Vue2使用选项式Api,Vue3使用组合式Api
  • template内,Vue3可以不需要根节点,Vue2必须包含唯一一个根节点。


    vue2

hook组合式封装,发挥了Vue3组件化开发的魅力。


vue3
image.png
setup案例
setup简化
image.png

四、ref与reactive响应式

  • 基本类型的响应式数据,只能使用ref
基本类型
  • 对象类型的响应式数据

1.reactive方式,只能定义对象类型。在setup中只需要取出使用即可,如car.price=200触发响应式和赋值。


reactive对象类型

2.ref处理对象类型响应式,底层使用的还是reactive


image.png
image.png
  • ref和reactive区别

分配不同对象时,对于ref只需要car.value=新对象,而对于reactive需要借助Object.assign(被替换对象,新对象1,新对象2...)


image.png

car.value=ref({brand:'五菱',price:50})替换赋值生成一个新对象
Object.assign(car,{brand:'五菱',price:50})对象内属性一一对应覆盖,还是原来的对象

image.png
  • toRefs与 toRef 使用

作用:将一个响应式对象中的每一个属性,转换为ref 对象
备注::toRefs与 toRef 功能一致,但 toRefs 可以批量转换整个对象,toRef只能转指定值。结构体name修改,person内对应的属性值也会响应式变化。


image.png
  • 响应式对象取值特殊情况
image.png

五、计算属性

引入import { reactive,ref, toRef, toRefs,computed } from 'vue'
同样使用的时候通过computed 包裹要计算的内容函数


image.png

六、watch属性

image.png
image.png
image.png
  • 1.监视 ref 定义的【基本类型】数据:直接写数据名即可,监视的是其 value 值的改变。调用这个函数可以终止监听,比如函数名stopwatch()
image.png
  • 2.监视对象:监视ref对象。

不管是ref还是reactive监视一整个对象时而不是某个非对象属性,则只要外围对象没有生成新的对象赋值,则newValue、oldValue都是指向新值。虽然对象内属性改动变化了,但是对象还是那个对象,对象地址值不变。


image.png
image.png
  • 3.监视对象:监视reactive对象。

reactive只能定义对象,所以只能监视整个对象,这个模式默认开启深度监视,且无法关闭。深度监视开启后,就可以监视对象内的某个任意属性变化。


image.png
  • 4.侦听对象内的某个特定属性,其他属性不监视

对象子属性:基本类型属性


image.png

对象子属性:对象类型属性。手动开启深度监视。


image.png
image.png
  • 5.侦听多个属性,写成数组形式
image.png

七、watchEffect属性

image.png
image.png

八、标签节点的ref属性

image.png
image.png

九、组件传参:defineProps属性

defineProps接收组件传递的参数。defineXXX都不需要直接引用,是属于宏函数。

image.png

十、Vue3生命周期

  • setup函数替代了Vue2中beforeCreate、created生命周期。
  • 程序解析到子组件时,子组件的可执行的生命周期全部经历后,才会继续执行父组件剩余生命周期。


    image.png

十一、Vue3的Hooks

Hooks的使用替换了Vue2中mixin的使用,是实现组合式API开发的关键。可以在创建的Hooks的useXXX文件函数里面封装你的代码,也可以使用生命周期钩子函数。合理的封装你的功能模块。

useDog.ts
useSum.ts
使用hooks

十二、Vue3的路由

  • Vue3和Vue2路由使用基本相同。
image.png
  • 路由器工作模式
image.png
image.png
image.png
image.png
  • 路由传参

1.query传参,两种写法方式。字符串写法和对象写法。

image.png

2.params传参,也是有两种写法方式。字符串写法和对象写法。但是注意这时候,只能使用name路由路径写法。注意,这种写法不可以传递对象和数组。

image.png

路由配置props:true,所有路由器接收参数都转换为组件属性

image.png

路由配置props其他写法

image.png

3.编程式路由器userRouter使用,RouterLink标签可以用的api属性userRouter也可以用

image.png

image.png

4.重定向路由导航redirect使用。可用于程序初始化页面显示的组件内容。

image.png

十三、Vuex状态管理升级为Vue3的Pinia

  • 下载、安装、初始化


    image.png
npm i pinia 安装下载
image.png
  • 存储和读取数据


    image.png
image.png
image.png
  • pinia内容值修改的方式。修改就是vuex里的actions+mutations(相当于setters)。
// 数据
let select=ref(1)// 用户选择的数字

// 方法
function xiugai(){
// 第一种对源数据直接修改方式,直接操作三次
countstore.sum += 1
countstore.school= '黑马培训'
countstore.address= '深圳'

// 第二种patch修改方式,一次数据操作
countstore.$patch(
{
sum:888,
school:'尚硅谷,
address:'北京
})

// 第三种actions修改方式,抽离共同修改,复用多
countstore.increment(select.value)
}
actions修改方式
  • pinia的storeToRefs响应式数据使用。storeToRefs只会关注sotre中数据,不会对方法进行ref包裹。


    image.png
  • pinia的getters


    image.png
image.png
  • pinia订阅监听数据变化。在组件使用到的地方订阅。


    image.png
  • pinia选项式写法和组合式写法


    选项式写法
组合式写法

十四、组件间通信方式

  • 1.props传参方式通信(使用频率高)


    image.png
image.png
  • 2.emit自定义事件通信(使用频率高)


    image.png
  • 3.mitt全局事件通信(使用频率高)。类似vue2全局事件总线。mitt可以实现任意组件间通信。
    注意在onUnmounted组件销毁时卸载绑定的事件,调用emitter.off('事件名')解绑,节省资源。


    image.png
image.png
  • 4.v-model通信。
    实现双向绑定的原理


    image.png
image.png

封装一个双向绑定username值的v-model组件功能,实现父与子组件(input类型)的双向通信。在子组件呈现父组件传递过来的modelValue参数,并且给父组件发送自定义事件,将值回传赋值给username。


image.png
更改value
  • 5.attrs实现爷爷组件向孙子组件通信。儿子组件需要设置attrs绑定。


    image.png
image.png
image.png
  • 6.refs与parent实现组件通信。
    image.png
  • 7.provide与inject实现组件通信。provide祖向孙通信,inject接收注册。


    image.png
image.png

十四、插槽slot。也是组件件通信的一种方式,多用于ui构建。

  • 默认插槽。名称默认是<slot name='default' >
image.png
image.png
  • 具名插槽。v-slot='abc'可以简写为#abc
image.png
  • 作用域插槽。

数据在子那边,但根据数据生成的结构,却由父亲决定。
如:压岁钱在孩子那,但根据压岁钱买的东西,却由父亲决定。


image.png

十五、响应式数据其他api补充

  • 浅层次响应式:浅层次双向绑定响应式shallowRef、shallowReactive
image.png
  • 单向只读响应式readOnly(深层次)、shallowReadOnly(浅层次)
image.png
image.png
image.png
  • toRaw与martRaw

toRaw对响应式数据剥壳,得到无响应式功能的原始数据对象,多用于传参的时候


image.png

markRaw永久性的设置为原始数据对象


image.png
image.png
  • 自定义Ref,customRef。

实现Ref响应式功能


Ref基本原理使用

customRef:在原生Ref功能上加上自己的处理逻辑
如实现一个延时更新的Ref,封装成hooks


customRef实现

十六、Teleport使用

image.png
image.png


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

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

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

相关文章

DICOM标准:DICOM图像核心属性概念详解——关于参考帧、病人位置、病人方位、图像位置和图像方向、切片位置、图像像素等重要概念解析

目录 1、参考帧模块属性 2、模态(Modality): 3、病人位置(Patient Position): 4、 病人方位(Patient Orientation): 5、 图像位置和图像方向: 6、切片位置 7、图像像素模块 7.1 图像像素属性描述 7.1.1 每个像素的样本 7.1.2 光度解释 7.1.3 平面结构 7.1.…

短视频矩阵系统的源码, OEM贴牌源码

针对矩阵短视频系统的源码功能设计&#xff0c;我们开发设计了以下核心模块&#xff1a; 1. 短视频一键发布功能&#xff1a;允许用户快速、便捷地发布短视频内容 2. 批量图文剪辑&#xff1a;支持同时编辑和处理多张图片与文本的组合&#xff0c;提高编辑效率 3. 批量剪辑短…

6款IntelliJ IDEA插件,让Spring和Java开发如虎添翼

文章目录 1、SonarLint2、JRebel for IntelliJ3、SwaggerHub插件4、Lombok插件5、RestfulTool插件6、 Json2Pojo插件7、结论 对于任何Spring Boot开发者来说&#xff0c;两个首要的目标是最大限度地提高工作效率和确保高质量代码。IntelliJ IDEA 是目前最广泛使用的集成开发环境…

新能源汽车与公共充电桩布局

近年来,全球范围内对新能源汽车产业的推动力度不断增强,中国新能源汽车市场也呈现蓬勃发展的势头,在政策与市场的共同推动下,新能源汽车销量持续增长。然而,据中国充电联盟数据显示,充电基础设施建设滞后于新能源汽车数量增长的现状导致充电桩供需不平衡,公共充电桩服务空白区域…

健身房管理智能化:SpringBoot技术指南

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了健身房管理系统的开发全过程。通过分析健身房管理系统管理的不足&#xff0c;创建了一个计算机管理健身房管理系统的方案。文章介绍了健身房管理系统的系统分析部…

Abaqus随机骨料过渡区孔隙三维网格插件:Random Agg ITZ Pore 3D (Mesh)

插件介绍 Random Agg ITZ Pore 3D (Mesh) V1.0 - AbyssFish 插件可在Abaqus内参数化建立包含水泥浆基体、粗细骨料、界面过渡区&#xff08;ITZ&#xff09;、孔隙在内的多相材料混凝土细观背景网格模型。 模型说明 插件采用材料映射单元的方式&#xff0c;将不同相材料赋值…

lora训练模型 打造个人IP

准备工作 下载秋叶炼丹器整理自己的照片下载底膜 https://rentry.org/lycoris-experiments 实操步骤 解压整合包 lora-scripts,先点击“更新” 训练图片收集 比如要训练一个自己头像的模型&#xff0c;就可以拍一些自己的照片&#xff08;20-50张&#xff0c;最少15张&…

sheng的学习笔记-tidb框架原理

目录 TiDB整体架构 TiDB架构图 组件-TiDB Server 架构图 流程 关系型数据转成kv ​编辑 组件-TiKV Server​ 架构图 主要功能&#xff1a; 列簇 组件-列存储TiFlash 组件-分布式协调层&#xff1a;PD PD架构图 路由 Region Cache back off TSO分配 概念 解…

计算机网络:网络层 —— 边界网关协议 BGP

文章目录 路由选择协议动态路由协议边界网关协议 BGPBGP 的基本概念BGP-4 的四种报文 路由选择协议 因特网是全球最大的互联网&#xff0c;它所采取的路由选择协议具有以下三个主要特点&#xff1a; 自适应&#xff1a;因特网采用动态路由选择&#xff0c;能较好地适应网络状态…

【在Linux世界中追寻伟大的One Piece】多路转接select

目录 1 -> I/O多路转接之select 1.1 -> 初识select 1.2 -> select函数原型 1.3 -> 关于fd_set结构 1.4 -> 关于timeval结构 2 -> 理解select执行过程 2.1 -> Socket就绪条件 2.2 -> select特点 2.3 -> select缺点 3 -> select使用示例…

小语言模型介绍与LLM的比较

小模型介绍 小语言模型&#xff08;SLM&#xff09;与大语言模型&#xff08;LLM&#xff09;相比&#xff0c;具有不同的特点和应用场景。大语言模型通常拥有大量的参数&#xff08;如 GPT-3 拥有 1750 亿个参数&#xff09;&#xff0c;能够处理复杂的自然语言任务&#xff…

双11花了“一部手机钱”买手机壳的年轻人,究竟在买什么?

【潮汐商业评论/原创】 这个双十一&#xff0c;Elsa在天猫多了一笔新支出——手机壳。和大家都熟悉的“义乌制造”不同的是&#xff0c;她的手机壳支出单件就已经到了500块&#xff0c;加上配套的手机链、支架、卡包、耳机壳&#xff0c;总共1000多元&#xff0c;足够买一部学…

03WIFI与蓝牙1——基于全志V3S的Linux开发板教程笔记

1. Kernel支持 1&#xff09;配置 终端输入&#xff1a; make menuconfig使能如下部分&#xff1a; 2&#xff09;编译 保存并退出后编译内核&#xff1a; make licheepi_zero_defconfig make menuconfig #配置内核&#xff0c;有需要的话配置 make -j16 make -j16 modu…

02系统跑起来——基于全志V3S的Linux开发板教程笔记

开发环境&#xff1a;Linux系统为Ubuntu 18.04.6 LTS&#xff0c;如在下面操作中提示部分环境/工具缺失未安装&#xff0c;请单独安装。 硬件基本介绍请参考第一篇文章&#xff1a;基于全志V3S的Linux开发板学习笔记01——简介 1. 环境准备 推荐直接下载完整资源包&#xff0c;…

用户思维,才是银行理财的杀手锏

近些年&#xff0c;伴随着居民理财需求的迸发&#xff0c;银行理财市场规模逐步扩大。 在前不久的2024Inclusion外滩大会上&#xff0c;麦肯锡发布了《银行理财六大趋势》&#xff0c;其中提到在财富管理客户风险偏好普遍下移的大背景下&#xff0c;银行理财将是客户财富管理配…

信息安全工程师(79)网络安全测评概况

一、定义与目的 网络安全测评是指参照一定的标准规范要求&#xff0c;通过一系列的技术、管理方法&#xff0c;获取评估对象的网络安全状况信息&#xff0c;并对其给出相应的网络安全情况综合判定。其对象主要为信息系统的组成要素或信息系统自身。网络安全测评的目的是为了提高…

学习笔记:微服务技术栈(一)服务治理框架SpringCloud

教学视频链接&#xff1a; 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 目录 前言一、认识微服务1.1 服务架构1.2 微服务架构1.3 SpringCloud 二、服务拆分及远程调用2.1 服务拆分细节2.2 服务间调用 …

医院数字影像信息系统源码,拥有完整知识产权,能够同HIS、电子病历、体检系统无缝对接

数字医学影像系统源码&#xff0c;RIS/PACS系统源码&#xff0c;医院数字影像信息系统源码。 开发技术&#xff1a;基于C/S架构&#xff0c;C#开发语言&#xff0c;数据库服务器采用Oracle数据库。三甲以下的医院都能满足 医学影像系统PACS系统是应用在医院影像科室的系统&…

LabVIEW for Linux 介绍

LabVIEW for Linux 介绍 1. 兼容性 LabVIEW for Linux 设计用于多种 Linux 发行版&#xff0c;包括 CentOS、Ubuntu 等。在安装之前&#xff0c;务必检查与您特定发行版版本的兼容性。 2. 程序移植 可移植性&#xff1a;在许多情况下&#xff0c;LabVIEW 程序&#xff08;VI…

使用NVM自由切换nodejs版本

一、NVM介绍 在日常开发中&#xff0c;我们可能需要同时进行多个不同NodeJS版本的项目开发&#xff0c;每个项目所依赖的nodejs版本可能不一致&#xff0c;我们如果只安装一个版本的nodejs&#xff0c;就可能出现node版本冲突问题&#xff0c;导致项目无法启动。这种情况下&am…