当前位置: 首页 > 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中把它引入进来,整个程序就正常运行了。

相关文章:

【Vue3】第四篇

Vue3学习第四篇 01. 插槽Slots02. 插槽Slots&#xff08;续集&#xff09;03. 插槽Slots&#xff08;再续集&#xff09;04. 组件生命周期05. 生命周期应用06. 动态组件07. 组件保持存活08. 异步组件09. 依赖注入10. Vue应用 01. 插槽Slots 模板内容&#xff1a;html结构&#…...

Chromium HTML5 新的 Input 类型tel对应c++

一、Input 类型: tel <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php">电话号码: <input type"tel" name…...

JVM—类加载器、双亲委派机制

目录 什么是类加载器 类加载器的分类 Bootstrap启动类加载器 通过启动类加载器加载用户jar包 Extension扩展类加载器和Application应用程序类加载器 通过扩展类加载器加载用户jar包 双亲委派机制 打破双亲委派机制 自定义类加载器 线程上下文类加载器 Osgi框架的类加…...

笔试题 求空格分割的英文句子中,最大单词长度。

求空格分割的英文句子中&#xff0c;最大单词长度。例如:“this is a word”&#xff0c;最大单词长度为4。要求:不能用 split 函数对字符串进行切分&#xff0c;算法复杂度为o(n) public class MaxWordLength { public static int maxWordLength(String sentence) { if (se…...

【笔记】大模型长度外推技术 NTK-Aware Scaled RoPE

NTK-Aware Scaled RoPE 正弦编码(Sinusoidal)旋转位置编码RoPE编码步骤&#xff1a;旋转位置编码的优势 NTK-Aware Scaled RoPE直接外推线性内插进制转换高频外推、低频内插的理解位置编码 总结参考&#xff1a; 长度外推技术是自然语言处理&#xff08;NLP&#xff09;领域中&…...

前端 eslint 配置,以及在git提交之前自动format

目录 1、配置eslint步骤 1、eslint安装配置步骤 2、配置scripts步骤 3、测试eslint 2、配置git-hook1、安装环境2、最终效果 众所周知&#xff0c;前端项目可以在报很多error的情况下运行。但是良好的代码规范仍然有利于项目的开发维护&#xff0c;这里提供我的规范&#xff0c…...

2024.10.9华为留学生笔试题解

第一题无线基站名字相似度 动态规划 考虑用动态规划解决 char1=input().strip() char2=input().strip() n,m=len(char1),len(char2) dp=[[0]*(m+1) for _ in range(n+1)] #dp[i][j]定义为以i-1为结尾的char1 和以 j-1为结尾的char2 的最短编辑距离 setA = set(wirel@com) set…...

利用ADPF性能提示优化Android应用体验

Android Dynamic Performance Framework(ADPF)是google推广的一套用于优化散热以及CPU性能的动态性能框架。本文主要介绍其中的performance hint的部分。 1、为何引入ADPF 我们都知道&#xff0c;在大多数设备上&#xff0c;Android 会动态调整CPU的频率和核心类型。如果work l…...

论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection

Pre-trained Online Contrastive Learning for Insurance Fraud Detection| Proceedings of the AAAI Conference on Artificial Intelligence 目录 摘要 Introduction Methodology Problem Formulation Pre-trained Model for Enhanced Robustness Detecting Network a…...

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…...

虚拟机WIN7安装PADS VX24 出现脚本故障 IPW213

用虚拟机安装WIN7&#xff0c;再开始安装PADS V24出现脚本故障IPW213 有去.NetFramework3.5 仍然没有效果 Download Microsoft .NET Framework 3.5 from Official Microsoft Download Center 最终用360驱动大师检测了下 发现有些必备组件没有安装&#xff0c;安装之后重启。 …...

Java正则表达式详解万字笔记内容丰富

正则表达式 1.1 正则表达式的概念及演示 在Java中&#xff0c;我们经常需要验证一些字符串&#xff0c;例如&#xff1a;年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则&#xff0c…...

文件属性与目录

⚫ Linux 系统的文件类型&#xff1b; 普通文件&#xff1a;存储数据&#xff0c;如文本文件、可执行文件等。 目录&#xff1a;用于组织文件和其他目录的特殊文件。 符号链接&#xff1a;指向另一个文件或目录的引用&#xff0c;类似于 Windows 中的快捷方式。 硬链接&#x…...

5G 基站SCTP

如何实现SCTP多归属链路对接 文章目录 ​​前言​​​​一、SCTP是什么&#xff1f;​​​​二、lksctp​​​​三.sctp初始化​​​​四.绑定本端两个IP​​​​ 五.与对端建链​​​​六.设置主要路径​​​​七.设置是否启用心跳​​​​八.关于防火墙的配置​ ​总结​​ …...

MFC的SendMessage与PostMessage的区别

一、SendMessage 同步操作&#xff1a; SendMessage 是一个同步函数&#xff0c;它会将消息发送到指定的窗口&#xff0c;并等待该窗口的消息处理过程完成&#xff0c;然后返回。这意味着它会阻塞当前线程&#xff0c;直到消息处理完成。 直接调用&#xff1a; SendMessage 会…...

学习虚幻C++开发日志——基础案例(持续更新中)

官方文档&#xff1a;虚幻引擎C编程教程 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community 1.物体上下起伏并旋转 1.1第一种写法 创建一个继承于Actor的类&#xff0c;并为新的Actor命名为FloatingActor&#xff0c;然后点击Create Class 重新…...

【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引

文章目录 一、数据存储方式二、二维网格二维线程块三、二维网格一维线程块四、一维网格一维线程块 为了方便下次找到文章&#xff0c;也方便联系我给大家提供帮助&#xff0c;欢迎大家点赞&#x1f44d;、收藏&#x1f4c2;和关注&#x1f514;&#xff01;一起讨论技术问题&am…...

VSCode Qt6安装OpenSSL

报错 Could NOT find OpenSSL, try to set the path to OpenSSL root folder in thesystem variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARYOPENSSL_INCLUDE_DIR SSL Crypto) (Required is at least version "3.0")问题确认 这个错误显示在Windows环境…...

JAVA学习-练习试用Java实现“定义一个用户类,包含用户名和密码”

问题&#xff1a; 定义一个用户类&#xff08;User&#xff09;&#xff0c;包含用户名&#xff08;username&#xff09;和密码&#xff08;password&#xff09;属性&#xff0c;提供静态方法验证密码是否有效&#xff08;长度至少为6&#xff09;&#xff0c;并提供getter和…...

大数据之VIP(Virtual IP,虚拟IP)负载均衡

VIP&#xff08;Virtual IP&#xff0c;虚拟IP&#xff09;负载均衡是一种在计算机网络中常用的技术&#xff0c;用于将网络请求流量均匀地分散到多个服务器上&#xff0c;以提高系统的可扩展性、可靠性和性能。以下是对VIP负载均衡的详细解释&#xff1a; 一、VIP负载均衡的基…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...