前端学习笔记—Vue3特性

一、 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.com2.使用腾讯镜像: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.xdnf.cn/news/10143.html

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

相关文章

iOS 去掉URL里面的百分号符号

遇到这个一段字符串 “publicId2030095197043302&publicBizTypeCONTENT_USER&chInfoch_life__chsub_Ndiscovery.featured&logoUrlhttps%3A%2F%2Fmdn.alipayobjects.com%2Fopen_content%2Fafts%2Fimg%2FA*_SUKQodfigcAAAAAAAAAAAAAfVx1AQ%2Foriginal&publicName…

node.js安装配置(Windows)

1、下载 CNPM Binaries Mirror 2、安装 3、验证 win R 进入cmd 4、配置环境变量 4.1、创建两个文件夹 4.2、安装目录进入cmd(配置全局属性) 配置两个命令&#xff1a; npm config set prefix "D:\liyunqing\nodejs\node_global"npm config set cache "D:\l…

jdbc中预防SQL攻击

目录 展示SQL攻击 举一个出现sql 攻击的例子 SQL攻击的原因 分析原因 阻止SQL攻击 PreparedStatement的含义 使用PreparedStatement的原因 步骤如下 注意 总结 展示SQL攻击 举一个出现sql 攻击的例子 假设我们在做登录业务时&#xff0c;思路是这样的&#xff1a; 首…

30.1 时序数据库TSDB的典型特点

本节重点介绍 : db-ranking网站对db进行排名时序数据特点时序数据库特点时序数据库遇到的挑战开源时间序列数据库 db-ranking 一个神奇的网站 https://db-engines.com/en/ranking 时序数据ranking https://db-engines.com/en/ranking/timeseriesdbms 排名方法 https://db-en…

14:00面试,14:06就出来了,问的问题过于变态了。。。

我从一家小公司转投到另一家公司&#xff0c;期待着新的工作环境和机会。然而&#xff0c;新公司的加班文化让我有些始料未及。虽然薪资相对较高&#xff0c;但长时间的工作和缺乏休息使我身心俱疲。 就在我逐渐适应这种高强度的工作节奏时&#xff0c;公司突然宣布了一则令人…

架构师之路-学渣到学霸历程-49

实现不同终端的跳转实验 今天分享一下&#xff1a; nginx的跳转&#xff1a;主要看你的访问是手机还是网页&#xff1b;于是就有这个跳转的功能&#xff1b; 1、基础的环境部署 安装好nginx&#xff08;这里最好的就是干净的环境&#xff09;创建两个server&#xff1b;用于…

RK3568笔记1:BootRom

BootRom是瑞芯微公司在生产的CPU时&#xff0c;存储在内部flash中的一段固件代码&#xff0c;用于初始化硬件和启动系统。 RK3568 处理器也具备 BootROM。这是存储在处理器内部的只读存储器 (ROM) 中的一段代码&#xff0c;通常是不可修改的&#xff0c;其主要功能是在设备加电…

DataWind将字符串数组拆出多行的方法

摘要&#xff1a; 可视化建模中先将字符串split为array再用explode(array)即可 可视化建模 进入“可视化建模”页面 1.1 新建任务 如果团队内没有可视化建模任务。请点击“新建任务”&#xff0c;输入名称并确定。 1.2 建立数据连接 在左边栏中选择“数据连接”&#xff0c…

2024年【电工(中级)】考试及电工(中级)考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;中级&#xff09;考试参考答案及电工&#xff08;中级&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及电工&#xff08;中级&#xff09;操作证已考过的学员汇总&#xff0c;相对有效帮…

【韩老师零基础30天学会Java】02章

sublime Text中本身没有GBK编码&#xff0c;需要安装 要在sublime Text中设置编码为GBK&#xff0c;请按照以下步骤操作 打开Sublime Text编辑器,点击菜单栏中的“Preferences”(首选项)选项&#xff0c;找打Package Control选项。点击Package Control&#xff0c;随后搜索Inst…

Pytorch实现运动鞋识别

Pytorch实现运动鞋识别 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 电脑系统&#xff1a;Windows11 显卡型号&#xff1a;NVIDIA Quadro P620 语言环境&#xff1a;python 3.9.7 编译器&#xff1a;j…

老年人跌倒智能检测系统

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

Spring Boot原理全解析:如何让开发更轻松高效(二)-起步依赖、自动装配

通过这篇博客&#xff0c;读者将能够掌握 Spring Boot 中的配置优先级和 Bean 管理的核心原理&#xff0c;为开发更加高效、可维护的 Spring Boot 应用打下坚实的基础。 目录 前言 起步依赖 自动配置 概述 常见方案 概述 方案一 方案二 总结 前言 通过这篇博客&#xf…

测试实项中的偶必现难测bug--短信触发H5拒绝行为

问题描述: 企业邀请其他人加入团队,发送邀请短信给对方,对方通过短信链接跳转到H5页面,输入手机后,点击发送验证码,前提是短信通知验证弹窗需要打开,收到短信验证码后,点击一键代入,会触发拒绝加入行为。 需求: 由于我们的邀请链接是一次性的,一旦有用户确认加入或…

PVE纵览-PVE与VM:谁才是你的最佳虚拟化选择?

PVE纵览-PVE与VM&#xff1a;谁才是你的最佳虚拟化选择&#xff1f; 文章目录 PVE纵览-PVE与VM&#xff1a;谁才是你的最佳虚拟化选择&#xff1f;摘要1 不同虚拟化平台的基础2 平台特性与功能3 性能与可靠性4 成本与经济性5 应用场景比较6 用户体验与支持7 结论与建议 关键字&…

陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解

时下&#xff0c;开发一款功能全面、用户体验良好的陪诊问诊APP成为了医疗行业的一大热点。本文将结合互联网医院系统源码&#xff0c;详细解析陪诊问诊APP的开发过程&#xff0c;为开发者提供实用的开发方案与技术指导。 一、陪诊问诊APP的背景与功能需求 陪诊问诊APP核心目…

post sim下如何将timing信息反标到仿真工具

文章目录 0 前言1 调用格式2 option介绍2.1 sdf_file (**必须**)2.2 module_instance (**可选**)2.3 config_file (**可选**)2.4 log_file (**可选**)2.5 mtm_spec (**可选**)2.6 scale_factors (**可选**)2.7 scale_type (**可选**) 0 前言 跑post sim时需要带入timing信息&a…

C++builder中的人工智能(16):神经网络中的SoftPlus激活函数

现在我们继续探索一下SoftPlus激活函数在人工神经网络&#xff08;ANN&#xff09;中的应用。了解SoftPlus激活函数的工作原理&#xff0c;将有助于您在使用C IDE构建C应用程序时更加得心应手。 目录 神经网络中的激活函数是什么&#xff1f;能在C中创建激活函数吗&#xff1f…

【图】图学习

0 回顾数据结构逻辑 1 图的定义和基本术语 必须有顶点&#xff0c;可以没有边。 Cn2和2*Cn2&#xff08;数学上的&#xff0c;n个顶点取2个顶点&#xff09; 概念有些多。。。。。。

类和对象(C++)(中)

1. 类的默认成员函数 默认成员函数就是⽤⼾没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类&#xff0c;我们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前4个&#xff0c;最后两个取地址重载不重…