当前位置: 首页 > news >正文

【Vue3】第四篇

Vue3学习第四篇

  • 01. 插槽Slots
  • 02. 插槽Slots(续集)
  • 03. 插槽Slots(再续集)
  • 04. 组件生命周期
  • 05. 生命周期应用
  • 06. 动态组件
  • 07. 组件保持存活
  • 08. 异步组件
  • 09. 依赖注入
  • 10. Vue应用

01. 插槽Slots

在这里插入图片描述
模板内容:html结构,可能是div标签等

也就是说插槽是用来显示html结构的。

实操:

App.vue中:
在这里插入图片描述
ShotsBase组件中:
在这里插入图片描述
结果:在这里插入图片描述

所以,<slot></slot>在哪,html结构就在哪显示:
在这里插入图片描述

02. 插槽Slots(续集)

(1)渲染作用域:
在这里插入图片描述
在这里插入图片描述

如果这个标签内容不是写死的,那么应该由父组件来动态传递数据还是由子组件呢

答案是:父组件

在这里插入图片描述

因为插槽是在子组件渲染

在这里插入图片描述

(2)默认内容
在这里插入图片描述

(3)具名插槽

组件之间传递这个插槽,内容不是固定的,可以是一个/两个/三个,且是可以分开的。

下图中传递了两个插槽,每个插槽分别有两个h3标签,我们希望能各渲染一个:
在这里插入图片描述
在这里插入图片描述
但是结果重复渲染了:
在这里插入图片描述

接下来我们使用具名插槽
在这里插入图片描述
在这里插入图片描述
结果如我们所愿:
在这里插入图片描述

注意(简写):
在这里插入图片描述v-slot在父组件中)

03. 插槽Slots(再续集)

在这里插入图片描述
所以我们的需求是:把子组件数据传递给插槽
在这里插入图片描述
怎么实现呢?

简记为:子传父,父合并,父传子,子渲染

在这里插入图片描述

父组件用一个名为“slotProps”接收(也可自己起名),slotProps是一个对象,对象里面包含子元素传递过来的那一条数据
如下形式便可拿到数据并显示在页面中。在这里插入图片描述

如果是具名插槽呢?如下:
在这里插入图片描述
在这里插入图片描述

04. 组件生命周期

从组件被创建那一刻开始,到组件被卸载那一刻,这是组件的整个生命周期。
在这里插入图片描述

在vue的生命周期中,有很多关键节点。比如我们所说的组件被创建的时候、组件初次被渲染了、组件的数据被更新了、组件销毁了。

生命周期钩子函数是自动执行的,不需要被调用。

(记:粉红色部分)
在这里插入图片描述

在这里插入图片描述

实操:(下面部分以此类推,就没有截出来了)
在这里插入图片描述

运行:

控制台自动跳出前四条数据
点击“更新数据”按钮,页面数据由“更新之前”改为“更新之后”,
控制台跳出如下两条数据(最后两条)
在这里插入图片描述

05. 生命周期应用

在这里插入图片描述

(1)应用一:
在这里插入图片描述
在这里插入图片描述

(2)应用二:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

不过,created不太好,改为mounted更好。
因为created的时候,ui还没渲染,mounted的时候才渲染。
(上图中数据能出来,是因为数据量小)

对于网页而言,先把组件结构渲染出来重要,而不是先拿到数据。
在这里插入图片描述

所以,我们应该用mounted,把整个结构已经渲染完成,渲染完成之后再去获取数据,再把页面渲染到浏览器界面之上。

06. 动态组件

有些场景会需要两个组件间来回切换。
在这里插入图片描述

结果:
在这里插入图片描述

07. 组件保持存活

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切换回A(卸载B)没加载那两句话,是因为B组件中没有写入控制台打印输出那两句话。

在这里插入图片描述
加上keep-alive之后,切换到B时A不会被卸载,自然切换回A时数据和保持被操作后的一样。

08. 异步组件

同步与异步的概念:
同步:多个功能,ABC三个功能,排队按顺序执行。
异步:多个功能,ABC三个功能同时进行。

异步组件的目的:优化组件的性能。或者说优化项目的性能

在这里插入图片描述

同步组件:假如我们的项目中,有100个组件,如果全都以正常组件加载的方式加载,项目一旦运行,100个组件会同时被加载出来,然后项目才能正常运行。
异步组件:用到哪个组件加载哪个。
(优势:加开项目时,加载会更快,符合业界的需求)

实现方式:
在这里插入图片描述

没有使用异步组件时,打开网络请求
在这里插入图片描述
然后把这些清理掉,再做组件切换的时候,会发现,没有新的网络请求再形成了
说明第一次打开这个项目的时候,所有的内容都已经被加载,包含A、B组件。

使用异步组件之后:
在这里插入图片描述
重新请求了一次B组件。说明第一次只加载了A组件。

09. 依赖注入

在这里插入图片描述
解决方案:
在这里插入图片描述
在这里插入图片描述

也可以传递动态数据:
在这里插入图片描述
子组件亦如此:
(接收到的数据也可以放入data内处理然后再返回)
在这里插入图片描述
在这里插入图片描述

注意:组件之间一定要有关系才能传递。
在这里插入图片描述

还有一个需要注意的细节:
在这里插入图片描述
实操:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10. Vue应用

这节课其实是要告诉大家,Vue项目是从哪开始执行的。

先前讲的都是Vue的API,并没有说Vue是哪开始入口,然后一步一步执行下来的。一直都是利用Vue的脚手架 或者是 Vue的工具来创建好项目,然后直接在项目当中修改。

我们首先要说的是应用实例
在这里插入图片描述
ps:这段代码存在于main.js中。

什么是应用实例呢?
你可以把应用实例理解为Vue的实例对象,因为是Vue的项目,所有每一个Vue项目肯定都要有一个Vue的实例,从Vue的实例开始一步步往下执行

在这里插入图片描述

代码解读:
从Vue中引入createApp,然后用它来创建一个App对象
(Vue的实例对象)

对比两图,可以看出App是根组件,那么,什么是根组件呢?
在这里插入图片描述

因为Vue是组件化开发,Vue的项目都是从第一个组件开始的,而我们这个App。vue就是第一个组件,也被称为根组件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当然,单纯把Vue项目创建出来,并把根组件传入这个项目还不算是完成。还要做一件事,那就是挂载应用

在这里插入图片描述

必须要执行app.mount并挂载一个根的容器。

因为Vue并不能直接浏览器中运行,必须挂载在容器当中。
在这里插入图片描述

为什么是#app?它是用来找index.html的。
在这里插入图片描述
日后,vue中所有的页面的内容都将放在这个div容器当中呈现。

所以,运行项目时:
在这里插入图片描述
其实真正的运行入口是index.html文件,所有的内容都挂在里面。

此外,注意:
在这里插入图片描述
构建工具 : (Webpack和Vite) 用来打包以及发布。

其实,我们所有所写的Vue代码,最终都会被编译成一个main.js文件。

然后我们在html中把它引入进来,整个程序就正常运行了。

http://www.lryc.cn/news/471444.html

相关文章:

  • Chromium HTML5 新的 Input 类型tel对应c++
  • JVM—类加载器、双亲委派机制
  • 笔试题 求空格分割的英文句子中,最大单词长度。
  • 【笔记】大模型长度外推技术 NTK-Aware Scaled RoPE
  • 前端 eslint 配置,以及在git提交之前自动format
  • 2024.10.9华为留学生笔试题解
  • 利用ADPF性能提示优化Android应用体验
  • 论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection
  • 【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera
  • 虚拟机WIN7安装PADS VX24 出现脚本故障 IPW213
  • Java正则表达式详解万字笔记内容丰富
  • 文件属性与目录
  • 5G 基站SCTP
  • MFC的SendMessage与PostMessage的区别
  • 学习虚幻C++开发日志——基础案例(持续更新中)
  • 【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引
  • VSCode Qt6安装OpenSSL
  • JAVA学习-练习试用Java实现“定义一个用户类,包含用户名和密码”
  • 大数据之VIP(Virtual IP,虚拟IP)负载均衡
  • 鸿蒙网络编程系列38-Web组件文件下载示例
  • Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置
  • Flink系列之:学习理解通过状态快照实现容错
  • Linux 读者写者模型
  • JavaScript 的 axios 实现文件下载功能
  • 合合信息亮相2024中国模式识别与计算机视觉大会,用AI构建图像内容安全防线
  • 深度学习:匿名函数lambda函数的使用与numerical_gradient函数
  • PHP数据类型
  • 2FA-双因素认证
  • 解决 Python 中的 TypeError 错误
  • 快速学会C 语言基本概念和语法结构