尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程

news2024/9/25 9:29:50

Vue3

编码规范

创建vue3工程

基于vite创建

快速上手 | Vue.js (vuejs.org)

npm create vue@latest

在nodejs环境下运行进行创建

按提示进行创建

用vscode打开项目

安装依赖

源文件有src

内有main.ts  App.vue

简单分析

编写src

vue2语法在三中适用

vue2中的date  methods语法是

选项式API

setup

setup函数执行的时机

setup执行时机比vue2中的beforecreate还要早

setup函数中的this是undefined      vue3中已经开始弱化this

数据原来是写在data中的 ,此时的name、age、tel都不是响应式数据

即,通过下面的方法修改变量,  变量虽然改变,但页面没有变化

setup返回值

小小面试题

Vue3中使用setup和使用data     methods  

setup和optionAPI的关系

data(methods    下文data代指vue2旧写法)和setup可以同时存在

且  data中可以访问setup中的数据,通过this关键字

旧写法可以读取新写法中的东西

新写法无法读取旧写法中的东西

vue2中选项式语法可以和vue3 中的新语法setup共存

旧语法可以读出setup中的东西,setup不可以读出旧语法中的东西

setup语法糖

省去每次将return放出去数据方法的步骤

这个script标签是用来配置组件名字

这个script标签用来配置组合式API

此时有两个script标签,且两个标签的lang属性一致

此时只需要在setup 的script标签内随意写数据和方法

若想要将这两个script标签写在一个内

需要借助插件完成

安装插件

1.npm i vite-plugin-vue-setup-extend -D

-D 是开发依赖的意思

2.修改vite.config.ts文件

响应式数据

ref定义基本类型 的数据

想让哪个数据成为响应式数据,就给那个数据包裹ref()

模板中不需要.value

js中进行数据操作,需要通过.value调用

name不是响应式的,name.value是响应式的

此时 的 被ref()包裹的name age为refImpl对象

reactive定义对象类型的数据

被reactive包裹的对象类型数据转变为响应式对象数据

通过控制台输出响应式对象可知,为proxy代理对象(数组)  proxy为原生js就有的,叫做代理

原生内置的函数

reactive所定义的对象类型的响应式数据是深层次的 

ref与reactive

表面上是ref定义对象类型数据改为响应式数据,实际上ref遇见对象数组等非基本数据类型,底层是通过reactive实现的

reactive重新分配一个新对象,会失去响应式

此时要是使用object.assign 替换

也就是说重新上传一个新对象,不能直接对进行了响应式改变的对象直接更改对象

而是通过object的assign 方法实现对象的覆盖

ref可以通过.value 直接修改对象

toRefs和toRef

把一个响应式结构中的属性拿出来并且使其具备响应式

toRefs 将对象内的属性可以多个同步取出并进行ref响应式

toRef(对象,对象其中的一个属性名)

toRefs(对象)

toRefs解构对象,toRef解构对象的某个属性

计算属性

根据已有数据计算出新数据

input表单中的属性

v-bind:   单向绑定

v-model:双向绑定

方法没有缓存

计算属性有缓存

在多次调用fullName是,如果firstName和LastName未改变,则计算属性执行一次

slice截取

val.split(‘-’)根据这个字符分开成为一个数组

.toUpperCase()字母大写的方法

计算属性最终得到的也是一个ref响应式数据

在对fullName进行修改时  .value 修改 的值会在set方法中返回给val

Watch

3.getter函数

Watch监视-情况一

监视ref定义的 基本类型数据

Watch监视-情况二

若想要监视对象内部属性的变化,需要手动开启深度监视

 

如果修改的是对象中的属性,因为所更改的是旧的对象中的属性,所以oldvalue为原本的对象,又因为更改后的属性所对应的还是旧属性,所以newvalue所对应的也是原本更改了属性的对象,所以这种写法下,仅修改属性值,而不修改整个对象的话,oldvalue和newvalue是相同的

实际使用中通常不使用旧值 

 Watch监视-情况三

如果监视的是reactive所定义的数据,底层隐式地创建了深层的监听

 Watch监视-情况四

监视的属性为基本数据类型

getter函数,一个函数返回一个值

监视的属性为对象数据类型

如果直接写对象的这个对象类型的属性,只能监视,这个对象类型数据内部的变化,整体对象的改变无法监视

写函数式返回 这个对象数据类型的属性  返回的是地址值,只有当这个属性整个对象改变时,才会监视,触发监视函数

中和方案:采用函数书写,添加深度监视属性

 Watch监视-情况五

监视上述多个数据

watchEffect

watch  监视 多个数据 需要将多个数据指出

watchEffect   不用明确指出监视的数据(函数中用到哪些属性,那就监视哪些属性)

标签的ref属性

用于给节点打标识

如何调用dom标签,使用id调用难免会出现 俩个vue文件中出现标有相同id的html标签

所以此时通过ref在  模版中的html标签内打上ref标签,内写上名字,再在js板块写

名字=ref()即可实现调用dom元素,且不会出现两个id重复的情况

ref加在html标签上,得到的是dom元素

加载组件上,得到的是组件的实例对象,但暴露出的数据需要再组件的vue内进行修改

ref写在组件标签上,,最终能获取组件实例

由于具有保护措施,,打印出的组件实例,没有实质的内容,

此时需要在   组件源文件,儿子端,内调用defineExpose设置暴露给父级的东西

scoped局部样式无脑加

其他vue文件就再也不怕类名起重复了

回顾TS中的_接口_泛型_自定义类型

TS接口规范的使用

@符在文件路径时使用,指站在金字塔顶端

限制Persons数组时

使用泛型

泛型什么时候用什么时候写

自定义类型

props的使用

从父级传数据

reactive直接传泛型

defineProps  函数用于接受数据

标签内传入数据的值

传入数据时,在html标签中遇到的问题    :与否  决定是表达式还是简单的字符

vue中的遍历   

数据源中每一项(形参)    数据源

还应添加索引值     key     :key可以进行对索引值的 赋值,避免后面遍历的时候出现问题

没有key索引值为0-1-2-。。。。。

props的几种写法

define为前缀的函数表示该函数为宏函数

不用引入也可以直接使用

生命周期(组件的一生)

Vue2的生命周期

v-if既然不展示,结构给删了

v-show       结果还在

debugger()

Vue3的生命周期

创建在setup这个中

挂载

挂载前onBeforeMount()

挂载完毕onMounted()

更新

更新前onBeforeUpdate

更新完毕onUpdate()

卸载

卸载前onBeforeUnmount()

卸载完毕onUnmounted()

 最基本八个生命周期

自定义Hooks

Hooks:

mixin

命名:useDog   (与狗相关的) useXX  与XX相关的一部分内容  被模块化包装

Hooks的调用

Hooks本质是一个个可以调用的函数

Hooks内能写钩子(生命周期函数)

   

组合式API          Hooks实现相关内容(数据函数等)模块化,整合到一起

export default  后面直接跟值

路由(route)

就是一种对应关系

1.路由就是一组key-value的对应关系

2.多个路由需要经过路由器的管理

spa        应用    单页面应用 需要使用路由

路由_基本切换效果

第一步写出导航区,和展示区

第二步  请出路由器

制定路由的时候  一定要想好路由器的工作模式

制定好路由后一定要暴露router

并在main.ts引入router

并使用路由器

此时已经具备路由环境

还应在App。vue文件中添加可视路由模块

路由_两个注意点

路由_路由器工作模式

to的两种写法

命名路由

路由嵌套

添加子级路由不用填/

路由传参  query参数

从一个响应式上解构一个属性,这个属性丢失响应式

params参数

占位问题

params不能传对象和数组

params       

不能用path只能用name

路由的props配置

第一种写法:将路由收到的所有params参数作为props传给路由组件      只能params参数使用

第二种写法:函数写法

更加适合query参数,因为params参数用第一种方法更加简单

第三种写法:无法进行修改,只有固定数据,使用较少

replace

跳转的时候有两种方式

push  会有历史记录,能够后退

导航区加replace    不能够后退

编程式路由导航

脱离routerLink实现跳转页面

router.push()写法                 routerLink 中 to能写什么

重定向

作用:将特定的路径,重新定向到已有路由。

通常写在路由设置最下面

pinia

vue.js状态管理库

自己定义的ref,需要.value拆包

如果是reactive里面包了一个ref,自动拆包,不需要再.value就能获取值

5.4修改数据的三种方式

第一种:直觉修改

 

工具中可以看到

第二种:patch批量变更

patch批量变更,在时间线上,多个数据单个修改      组件会进行多次修改

                                                    而使用第二种修改方式    组件只会进行一次patch修改

批量变更

第三种:action

storeToRefs

读取store数据更加优雅

storeToRefs只关心数据不关心其他的

而使用toRefs会使内部所有属性被ref包裹

getters的使用

对stroe数据不满意,对其进行修改

如果用this,不能使用箭头函数

订阅subscribe可以监视vueX的修改

只要是store  身上都有这个subscribe方法

localStorage.setItem('talkList',state.talkList)//浏览器的本地存储

localStorage里面存的都是字符串,如果存的不是字符串

,底层会调用toString

store组合式写法

选项式

组合式

组件通信

UomgAPI

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

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

相关文章

C++基础知识:冒泡排序(利用C++实现冒泡排序)

1.冒泡排序的作用: 最常用也是简单的排序算法,对数组内元素进行排序 2.冒泡排序的具体步骤: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值…

关于思维和智能体模型的思考(2)

在关于思维和智能体模型的思考(1)一文中,我们提出了思维和Agent 模型,提出了使用确定连接的智能体构建的思维模型。本文我们继续讨论思维与智能体,重点探讨另一种智能体-自主智能体,并且提出了自主智能体的…

《黑马点评》Redis高并发项目实战笔记【完结】P1~P72

花费4周敲完《黑马点评》的课程,做了详细的笔记,感觉受益匪浅,一直一直都在不停成长着。 突然想起《苍穹外卖》系列至今已收获200个赞,500个收藏,好评颇多,私信我的人不计其数,在此谢谢大家。 …

从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)

目录 文章目录 目录摘要1.将PX4源码上传至腾讯工蜂2.从腾讯工蜂克隆源码到本地ubuntu3.如何查看自己源码的版本信息 摘要 本节主要记录从零开始学习PX4源码3(如何上传官网源码到自己的仓库中)及如何查看PX4的固件版本信息,欢迎批评指正! PX4源码版本V1.…

东软“引战”国家队 通用技术“补链”大国重器

向来低调温和的东软创始人刘积仁,这一次抛出了“王炸”级的资产交易。 7月3日,《多肽链》获得一则足以引爆国内医疗设备行业的投资信息:被东软集团视为核心资产、掌上明珠的东软医疗,成功引入通用技术集团资本有限公司与中国国有…

240713_昇思学习打卡-Day25-LSTM+CRF序列标注(4)

240713_昇思学习打卡-Day25-LSTMCRF序列标注(4) 最后一天咯,做第四部分。 BiLSTMCRF模型 在实现CRF后,我们设计一个双向LSTMCRF的模型来进行命名实体识别任务的训练。模型结构如下: nn.Embedding -> nn.LSTM -&…

前端练习小项目——方向感应名片

前言:在学习完HTML和CSS之后,我们就可以开始做一些小项目了,本篇文章所讲的小项目为——方向感应名片 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 在开始学习之前,先让我们看一…

C++客户端Qt开发——开发环境

一、QT开发环境 1.安装三个部分 ①C编译器(gcc,cl.exe……) ②QT SDK SDK-->软件开发工具包 比如,windows版本QT SDK里已经内置了C的编译器(内置编译器是mingw,windows版本的gcc/g) ③QT的集成开发…

KnoBo:医书学习知识,辅助图像分析,解决分布外性能下降和可解释性问题

KnoBo:从医书中学习知识,辅助图像分析,解决分布外性能下降问题 提出背景KnoBo 流程图KnoBo 详解问题构成结构先验瓶颈预测器参数先验 解法拆解逻辑链对比 CLIP、Med-CLIPCLIPMed-CLIPKnoBo 训练细节预训练过程OpenCLIP的微调 构建医学语料库文…

说说执行一条查询SQL语句时,期间发生了什么?

执行一条查询SQL语句时,期间发生了什么? 前言说说执行一条查询SQL语句时,发生了什么?连接器权限验证断开连接长连接 查询缓存查询缓存的问题 解析器词法分析语法分析 执行 SQL预处理器优化器执行器主键索引查询全表扫描索引下推 总…

轻薄鼠标的硬核选购攻略,很多人都在“高性价比”鼠标上栽跟头了

轻薄款设计的鼠标是目前鼠标市场的出货大头, 也是价格最卷的一类鼠标。 比游戏鼠标或许更卷一些。 这和当前的移动办公趋势关系很大。 这类鼠标主要跟笔记本和iPad搭配。 核心的使用场景是办公。 因此轻薄和静音是这类鼠标的核心卖点。 同时用户并不愿意付出太…

代码随想录算法训练营第三十二天|1049.最后一块石头的重量II、494.目标和、474.一和零

1049.最后一块石头的重量II 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&#xff0c;那…

期货交易记录20240713

文章目录 期货交易系统构建步骤一、选品二、心态历练三、何时开仓3.1、开仓纪律3.2、开仓时机3.3、开仓小技巧 四、持仓纪律五、接下来的计划 2024年7月13号&#xff0c;期货交易第5篇记录。 交易记录&#xff1a;半个月多没记录了&#xff0c;这段时间分别尝试做了菜粕、棕榈油…

9.6 栅格图层符号化唯一值着色渲染

文章目录 前言多波段彩色渲染唯一值着色QGis设置为唯一值着色二次开发代码实现唯一值着色 总结 前言 介绍栅格图层数据渲染之唯一值着色渲染说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 多波段彩色渲染唯一值着色 以“with_color_table.tif”数据为例…

【嵌入式DIY实例-ESP8266篇】-LCD ST7789显示DS1307 RTC时间数据

LCD ST7789显示DS1307 RTC时间数据 文章目录 LCD ST7789显示DS1307 RTC时间数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS1307 RTC 集成电路构建简单的实时时钟和日历 (RTCC),其中时间和日期打印在 ST7789 TFT 显示模块上。 ST7789 TFT 模块包…

Open-TeleVision——通过VR沉浸式感受人形机器人视野:兼备远程控制和深度感知能力

前言 7.3日&#xff0c;我司七月在线(集AI大模型职教、应用开发、机器人解决方案为一体的科技公司)的「大模型机器人(具身智能)线下营」群里的一学员发了《Open-TeleVision: Teleoperation with Immersive Active Visual Feedback》这篇论文的链接&#xff0c;我当时快速看了一…

UML/SysML建模工具更新情况(2024年7月)(1)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 工具最新版本&#xff1a;Enterprise Architect 17.0 BETA 更新时间&#xff1a;2024年7月2日 工具简介 性价比很高&#xff0c;目前最流行的UML建模工具。还包含需求管理、项目估算…

AIGC专栏13——ComfyUI 插件编写细节解析-以EasyAnimateV3为例

AIGC专栏13——ComfyUI 插件编写细节解析-以EasyAnimateV3为例 学习前言什么是ComfyUI相关地址汇总ComfyUIEasyAnimateV3 节点例子复杂例子-以EasyAnimateV3为例节点文件必要库的导入载入模型节点定义Image to Video节点定义节点名称映射 __init__.py文件插件导入comfyUI 学习前…

被动的机器人非线性MPC控制

MPC是一种基于数学模型的控制策略&#xff0c;它通过预测系统在未来一段时间内的行为&#xff0c;并求解优化问题来确定当前的控制输入&#xff0c;以实现期望的控制目标。对于非线性系统&#xff0c;MPC可以采用非线性模型进行预测和优化&#xff0c;这种方法被称为非线性模型…

JS实现:统计字符出现频率/计算文字在文本中的出现次数

要实现这个功能&#xff0c;JavaScript 一个非常强大的方法&#xff0c;那就是reduce() reduce() 它用于将数组的所有元素减少到一个单一的值。这个值可以是任何类型&#xff0c;包括但不限于数字、字符串、对象或数组。 reduce() 方法接收一个回调函数作为参数&#xff0c;这个…