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

【Vue2】动态组件的使用-切换组件和keep-alive,以及异步组件

目录

    • 想实现切换不同列表展示不同数据
      • 方法一
      • 方法二,动态组件
          • 动态组件的父组件如何传的值
          • 动态组件的子组件如何接受传的值
    • 认识keep-alive
      • 缓存组件的生命周期
    • 异步组件,单独打包,实现webpack分包,
      • 如何对组件进行单独打包,目的缓解首页加载速度
      • 解决方法 异步组件
      • 代码分包默认打包过程

想实现切换不同列表展示不同数据

方法一

  • 通过v-if判断逻辑。负责显示哪个
  • 缺点:当有大量逻辑判断的时候不推荐
<template><div class="home"><div class="nev"><divclass="nevbar":class="nevindex == index ? 'newnev' : ''"v-for="(item, index) in tab":key="index"@click="itemClick(index)">{{ item }}</div></div><one v-if="nevindex==0"></one><two v-if="nevindex==1"></two><three v-if="nevindex==2"></three></div>
</template><script>
import one from "../components/one.vue";
import two from "../components/two.vue";
import three from "../components/three.vue";
export default {name: "HomeView",components: {one,two,three,},data() {return {tab: ["列表1", "列表2", "列表3"],nevindex: 0,};},methods: {// nev切换itemClick(index) {this.nevindex = index;},},created() {},
};
</script>
<style scoped lang="scss">
.nev {display: flex;justify-content: space-around;
}
.newnev {color: aqua;
}
</style>

在这里插入图片描述

方法二,动态组件

  • 1.功能类似于tab组件,可用于组件的切换
  • 2.is属性决定了component当前渲染的组件,is属性可以是组件或者是字符串,当是字符串时代表组件的注册名称或者是标签名
  • 3.component动态组件上可以传任意参数和事件,且会被所有is上的当前组件所接收
  • 简单的说,component就像一个容器,根据is属性来决定渲染什么组件,其他的没有什么区别
<template><div class="home"><div class="nev"><divclass="nevbar":class="nevindex == index ? 'newnev' : ''"v-for="(item, index) in tab":key="index"@click="itemClick(index)">{{ item }}</div></div><div><component :is="tabsIndex[nevindex]"></component></div></div>
</template><script>
import one from "../components/one.vue";
import two from "../components/two.vue";
import three from "../components/three.vue";
export default {name: "HomeView",components: {one,two,three,},data() {return {tab: ["列表1", "列表2", "列表3"],tabsIndex: ["one", "two", "three"],nevindex: 0,ISshow: "one",};},methods: {// nev切换itemClick(index) {this.nevindex = index;},},created() {},
};
</script>
<style scoped lang="scss">
.nev {display: flex;justify-content: space-around;
}
.newnev {color: aqua;
}
</style>
动态组件的父组件如何传的值
<componentname="乞力马扎罗"@getClick="getClick":is="tabsIndex[nevindex]"
></component>//js中methods: {//子组件传的值getClick(e) {console.log(e);},},
动态组件的子组件如何接受传的值
<template><div><h2>one页面{{name}}</h2><button @click="handClick">子组件</button></div>
</template>
<script>
export default {props:{name:{type:String,default:''}},methods:{handClick(){this.$emit('getClick',"接受到了子组件的值")},}
}
</script>

认识keep-alive

  • v-if切换这些,都会造成组件的销毁,会在这里监听到
 //组件卸载unmounted(){},
  • 缺点,数据的状态未保存
  • 保持存活,用keep-alive包裹即可
  • keep-alive有一些属性
  • 1,include存放的name是组件自身的name属性,只有名称匹配的组件会被缓存
  • 2,exclude,任何名称匹配的组件都不会被缓存
  • 3,max,最多可以缓存多少组件实例,一旦达到这个数字,那么缓存组件中最近没有被缓存的实例会被销毁
  • 以下是三种写法
//字符串<keep-alive include="homeone,hometwo"><componentname="乞力马扎罗"@getClick="getClick":is="tabsIndex[nevindex]"></component></keep-alive>//正则<keep-alive :include="/homeone|hometwo/"><componentname="乞力马扎罗"@getClick="getClick":is="tabsIndex[nevindex]"></component></keep-alive>//数组<keep-alive :include="['homeone', 'hometwo']"><componentname="乞力马扎罗"@getClick="getClick":is="tabsIndex[nevindex]"></component></keep-alive>

在这里插入图片描述

缓存组件的生命周期

  • 该组件内部
//缓存组件的生命周期,进入活跃状态activated(){console.log("活跃")},//离开deactivated(){console.log("离开")}

异步组件,单独打包,实现webpack分包,

在这里插入图片描述

如何对组件进行单独打包,目的缓解首页加载速度

解决方法 异步组件

  • vue中,通过vue提供的函数,defineAsyncComponent
  • import函数可以让webpack对导入文件进行分包处理
  • 目的:是可以对其进行分包处理
  • 步骤:
//异步组件
import {defineAsyncComponent} from 'vue'
//工厂函数写法,返回promise对象
const threevue=defineAsyncComponent(()=>import("../components/three.vue"))

在这里插入图片描述

  • npm run build

在这里插入图片描述

代码分包默认打包过程

  • 默认情况下,构建整个组件树的过程中,因为组件和组件之间是通过模块化直接依赖的,那么wbpack在打包时候就会将组件模块打包在一起
  • 这个时候随着项目的不断变大,app.js文件的内容过大,会造成首屏的渲染速度变慢
  • 打包时,代码的分包
  • 对于一些不需要立即使用的组件,可以单独对他们进行拆分,拆分成一些小的代码块chunk.js
  • 这些chuck.js会在需要时从服务器加载下来,并且运行代码

相关文章:

【Vue2】动态组件的使用-切换组件和keep-alive,以及异步组件

目录 想实现切换不同列表展示不同数据方法一方法二&#xff0c;动态组件动态组件的父组件如何传的值动态组件的子组件如何接受传的值 认识keep-alive缓存组件的生命周期 异步组件&#xff0c;单独打包&#xff0c;实现webpack分包&#xff0c;如何对组件进行单独打包&#xff0…...

C++的IO流

目录 C语言的输入与输出 流是什么 CIO流 C标准IO流 C文件IO流 stringstream的简单介绍 在C语言中&#xff0c;如果想要将一个整形变量的数据转化为字符串格式&#xff0c;如何去做&#xff1f; 将数值类型数据格式化为字符串 字符串拼接 序列化和反序列化结构数据 注…...

nodejs+vue+elementui电影订票网站系统_wqc3k

电影订票系统在国内有很多值得借鉴的例子&#xff0c;功能也都趋于完善&#xff0c;因此此次电影订票系统将轻量化开发&#xff0c;要完成以下功能&#xff1a; &#xff08;1&#xff09;要支持完整的用户注册&#xff0c;登录功能&#xff0c;账号的管理通过管理员来实现。 &…...

2023-08-14 linux 串口终端输入长命令不换行,覆盖前面内容,stty命令设置串口终端行列数

一、linux 串口终端输入长命令不换行&#xff0c;覆盖前面内容&#xff0c;现象如下图&#xff1a; 二、解决方法&#xff1a;用stty 命令设置行列数 stty columns 200 stty rows 10三、参考文章 https://www.cnblogs.com/goloving/p/15170537.html 常用Linux串口设备操作命…...

根据指定日期获取周,月,季度,年的第一天和最后一天

1. 根据指定日期获取周&#xff0c;月&#xff0c;季度&#xff0c;年的第一天和最后一天 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 根据给定时间获取周、月度、季度、年度开始结束时间*…...

CRMEB商城系统:便捷、安全、多样化的购物方式

商城系统是当今社会商业发展的重要组成部分&#xff0c;它以数字化、网络化的方式提供商品和服务。商城系统通过互联网技术&#xff0c;将商品和消费者紧密连接&#xff0c;方便了购物的流程和效率。 商城系统的特点之一是无国界化。传统实体商店通常受限于地理位置和时间&…...

同步_异步请求和Ajax并利用axios框架简化

目录 同步和异步 原生的Ajax 创建XMLHttpRequest对象 常用方法 常用属性 axios框架 同步和异步 同步请求&#xff1a;发送请求后&#xff0c;会做出回应&#xff0c;回应的内容会覆盖浏览器中的内容&#xff0c;这样会打断其他正常的操作&#xff0c;显得不太友好&#…...

取个对象值导致系统崩溃

取个对象值导致系统崩溃 前言 想必各位小伙经常在项目中遇到一些错误&#xff0c;取对象值的时候&#xff0c;经常报错,又或者某些项目突然就挂经常都是出现在一些对象取值上面&#xff0c;然后就被领导一顿训斥 报错分析 例如&#xff1a; 下面这个报错大家想必不会陌生&am…...

nestjs 基础、使用 passport 来进行鉴权

回顾一些定义 NestJS 部分 Module 模块结构 模块是一个图状引用关系。 模块的实例化有三种模式。默认情况是 singletones 模式&#xff0c;也就是模块可能被引用&#xff0c;但不同的引用处拿的是同一个共享实例&#xff0c;也就是说一个进程有一个唯一的实例被共享。 模块&a…...

1.1 : DNA 螺旋

概述 脱氧核糖核酸(DNA)是负责在所有生物体和大多数病毒中代代相传性状的遗传物质。DNA由两条相互缠绕形成双螺旋的核苷酸链组成。DNA 结构的发现是在近一个世纪的时间里逐步发现的,代表了科学史上最著名、最迷人的故事之一。 DNA 结构详细信息 每条 DNA 链均由称为核苷酸…...

.gitignore匹配规则

目录 1.直接一个名称2.斜杠 /3.符号 *4.问号 &#xff1f;5.感叹号 &#xff01;6.gitkeep 借鉴抖音账号&#xff1a; 渡一前端提薪课 1.直接一个名称 会忽略目录下的所有该名称文件和文件夹&#xff0c;无论嵌套多深。 2.斜杠 / 1.斜杠在开头(/dist)&#xff1a;忽略和.gitig…...

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…...

JAVA 鼠标控制与键盘输入控制

核心类&#xff1a;java.awt.Robot 该类是JDK定义的电脑系统的抽象类,可以用来模拟实现鼠标点击与键盘输入等信息 简单实现一个自动抢票代码&#xff1a; Robot rt new Robot();//可以认为是操作间隔的停歇时间&#xff0c;比如等待页面加载&#xff0c;等弹框内容展示等 r…...

VB+SQL宿舍管理系统设计与实现

摘要 统是采用Visual Basic作为前台开发工具,SQL Server作为后台数据库平台的基于C/S的两层模式的管理系统。宿舍管理系统是目前各所高校后勤管理之中的重要部分,如何能科学有效的开展好宿舍管理部分的工作,是当前高校领导人和后勤管理人员关心的问题。因此,宿舍管理部分工…...

自律人生:戒断视频、游戏、小说、躺在床上不玩手机、睡觉前总结和冥想(提升注意力、专注度)

以下是一些方法来戒断视频、游戏、小说、躺在床上不玩手机&#xff0c;以及提高注意力和专注力。 制定计划 制定一个详细的计划&#xff0c;包括要戒断的东西、时间表以及对于成功戒断的奖励。这将帮助你保持目标&#xff0c;让你更容易达到成功。 找到替代品 尝试找到其他…...

学习笔记十四:K8S最小调度单元POD概述

K8S最小调度单元POD概述 k8s核心资源Pod介绍Pod是什么Pod如何管理多个容器Pod网络Pod存储代码自动发版更新收集业务日志 Pod工作方式自主式Pod控制器管理的Pod(防误删除) 如何基于Pod运行应用 k8s核心资源Pod介绍 K8s官方文档&#xff1a;https://kubernetes.io/ K8s中文官方文…...

ARM--day2(cpsr、spsr、数据搬移指令、移位操作指令、位运算操作指令、算数运算指令、比较指令、跳转指令)

.text .global _gcd _gcd:mov r0,#9mov r1,#15b loop loop:cmp r0,r1beq stopsubhi r0,r1bhi loopsubcc r1,r0bcc loopstop:b stop.end用for循环实现1~100之间和5050 .text .global _gcd _gcd:mov r0,#0x0mov r1,#0x1mov r2,#0x64b loop loop:cmp r1,r2bhi stopadd r0,r0,r1ad…...

idea报错:java: 程序包org.springframework.web.bind.annotation不存在

这个错误通常都是maven仓库的问题&#xff0c;试了网上很多方法&#xff0c;都没有解决&#xff0c;如果大家有遇到这个问题&#xff0c;且试了很多方法之后都没有解决&#xff0c;不妨可以试试我这个方法 先编译一下已经写好的代码&#xff0c;这时候会出现以上报错&#xff…...

Android平台GB28181设备接入端如何实现多视频通道接入?

技术背景 我们在设计Android平台GB28181设备接入模块的时候&#xff0c;有这样的场景诉求&#xff0c;一个设备可能需要多个通道&#xff0c;常见的场景&#xff0c;比如车载终端&#xff0c;一台设备&#xff0c;可能需要接入多个摄像头&#xff0c;那么这台车载终端设备可以…...

Evaluation Warning: The document was created with Spire.Doc for JAVA.

spire.doc-5.4.10.jar 生成PDF有广告语水印【Evaluation Warning: The document was created with Spire.Doc for JAVA.】 <!-- maven库访问不了 https://mvnrepository.com/artifact/e-iceblue/spire.doc e-iceblue库才能访问 https://repo.e-iceblue.cn/repository/maven…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

Java并发编程实战 Day 11:并发设计模式

【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天&#xff0c;今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案&#xff0c;它们不仅提供了优雅的设计思路&#xff0c;还能显著提升系统的性能…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!

多连接 BLE 怎么设计服务不会乱&#xff1f;分层思维来救场&#xff01; 作者按&#xff1a; 你是不是也遇到过 BLE 多连接时&#xff0c;调试现场像网吧“掉线风暴”&#xff1f; 温度传感器连上了&#xff0c;心率带丢了&#xff1b;一边 OTA 更新&#xff0c;一边通知卡壳。…...