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

vue3使用keep-alive缓存组件与踩坑日记

目录

一.了解一下KeepAlive

二.使用keep-alive标签缓存组件

1.声明Home页面名称

三.在路由出口使用keep-alive标签

四.踩坑点1:可能需要配置路由(第三点完成后有效可忽略)

五.踩坑点2:没有找到正确的路由出口


一.了解一下KeepAlive

KeepAlive | Vue.js
<KeepAlive> 是一个vue自带的内置组件,它的功能是在多个组件间动态切换时缓存被移除的组件实例。

二.使用keep-alive标签缓存组件

需求举例:需要缓存Home页面,使其在切换到其它页面再切换回来时不用再次渲染和获取请求

1.声明Home页面名称

方法一:在页面内另起一个不带 setup 的script标签

// Home.vue
// 单独命名页面名称的标签,一般不在此写js代码
<script lang='ts'>
export default {name: 'Home', // 在这里定义页面名称
};
</script>// 写js代码
<script setup lang='ts'></script>

方法二:使用插件

1.命令行下载:npm install vite-plugin-vue-setup-extend -D

2.在vite.config.ts文件中引入使用:

// vite.config.ts
import VueSetupSettingExtend from 'vite-plugin-vue-setup-extend' // 引入export default defineConfig({plugins: [vue(), VueSetupSettingExtend()], // 在plugins中使用VueSetupSettingExtend(),不要修改其它内容// 其它内容
})

3.在对应页面的script命名name:

// Home.vue
<script setup lang='ts' name="Home"></script>

三.在路由出口使用keep-alive标签

找到路由出口router-view标签,一般在App.vue或Layout.vue页面,修改为:

<router-view v-slot="{ Component }"><!-- 需要缓存的组件名称放include内,max值为最大缓存组件的数量 --><keep-alive :max="10" :include="includeData"><component :is="Component" /></keep-alive>
</router-view><script setup lang='ts'>
const includeData = ['Home'] // 设置需要缓存的组件的名称
</script>

四.踩坑点1:可能需要配置路由(第三点完成后有效可忽略)

如到做完第三点后没有效果,可以考虑你的项目是否需要配置路由。配置如下

// router.ts
import Home from '../views/Home.vue'; // 引入名称与页面名称name一至const routes = [{path: '/',component: Layout,redirect: "/index",children: [{path: '',name: '首页', // 这里无需为Homecomponent: Home, // 配置component值与页面name一至meta: { sidebar: true, displayName: '首页', cache: true },icon: 'House',},}
]

五.踩坑点2:没有找到正确的路由出口

网上有很多教程都教人在App.vue里面的 router-view 标签中配置 keep-alive 标签,App.vue里面一般都有 router-view 标签做为路由出口,但它并非一定就是需要缓存的页面组件的路由出口。例如:我们要缓存Home.vue,有些项目会设置一个Layout.vue页面,在这个页面里也有 router-view 标签作为页面组件Home.vue的路由出口,那么此时App.vue里面 router-view 标签就仅仅是Layout.vue页面的路由出口,如果你在App.vue里配置了 keep-alive 标签,那么缓存将无效,因为App.vue里面 router-view 标签永远不会直接访问Home.vue,只会访问Layout.vue,再由Layout.vue访问Home.vue,所以要缓存Home.vue,需要在Layout.vue中使用 keep-alive 标签。

// App.vue路由出口
<template><router-view></router-view>
</template>// Layout.vue路由出口
<router-view v-slot="{ Component }"><!-- 需要缓存的组件名称放include内,max值为最大缓存组件的数量 --><keep-alive :max="10" :include="includeData"><component :is="Component" /></keep-alive>
</router-view>

相关文章:

vue3使用keep-alive缓存组件与踩坑日记

目录 一.了解一下KeepAlive 二.使用keep-alive标签缓存组件 1.声明Home页面名称 三.在路由出口使用keep-alive标签 四.踩坑点1&#xff1a;可能需要配置路由&#xff08;第三点完成后有效可忽略&#xff09; 五.踩坑点2&#xff1a;没有找到正确的路由出口 一.了解一下Kee…...

gpt2 本地调用调用及其调用配置说明

gpt2 本地调用调用及其调用配置说明 环境依赖安装&#xff0c;模型下载 在大模型应用开发中&#xff0c;需要学会本地调用模型&#xff0c; 要在本地环境调用gpt2 模型需要将模型下载到本地&#xff0c;这里记录本地调用流程&#xff1a; 在huggingface 模型库中查找到需要使…...

【Abstract Thought】【Design Patterns】python实现所有个设计模式【下】

前言 彼岸花开一千年&#xff0c;花开花落不相见。 若问花开叶落故&#xff0c;彼岸缘起缘又灭——《我欲封天》 \;\\\;\\\; 目录 前言简单的设计模式复杂的设计模式13责任链14迭代器15备忘录16状态机17模板方法18访问者19观察者20命令Shell21策略22调解23解释器 简单的设计模…...

【物联网】PWM控制蜂鸣器

文章目录 一、PWM介绍1.PWM的频率2.PWM的周期 二、PWM工作原理分析三、I.MX6ull PWM介绍1.时钟信号2.工作原理3.FIFO 四、PWM重点寄存器介绍1.PWM Control Register (PWMx_PWMCR)2.PWM Counter Register (PWMx_PWMCNR)3.PWM Period Register (PWMx_PWMPR)4.PWM Sample Register…...

Python----机器学习(基于PyTorch的乳腺癌逻辑回归)

Logistic Regression&#xff08;逻辑回归&#xff09;是一种用于处理二分类问题的统计学习方法。它基于线性回归 模型&#xff0c;通过Sigmoid函数将输出映射到[0, 1]范围内&#xff0c;表示概率。逻辑回归常被用于预测某个实 例属于正类别的概率。 一、数据集介绍 在本例中&…...

5分钟学会接口自动化测试框架

今天&#xff0c;我们来聊聊接口自动化测试。 接口自动化测试是什么&#xff1f;如何开始&#xff1f;接口自动化测试框架如何搭建&#xff1f; 自动化测试 自动化测试&#xff0c;这几年行业内的热词&#xff0c;也是测试人员进阶的必备技能&#xff0c;更是软件测试未来发…...

基于FreeRTOS和LVGL的多功能低功耗智能手表(APP篇)

目录 一、简介 二、软件框架 2.1 MDK工程架构 2.2 CubeMX框架 2.3 板载驱动BSP 1、LCD驱动 2、各个I2C传感器驱动 3、硬件看门狗驱动 4、按键驱动 5、KT6328蓝牙驱动 2.4 管理函数 2.4.1 StrCalculate.c 计算器管理函数 2.4.2 硬件访问机制-HWDataAccess 2.4.3 …...

visual studio 常用的快捷键(已经熟悉的就不记录了)

以下是 Visual Studio 中最常用的快捷键分类整理&#xff0c;涵盖代码编辑、调试、导航等核心场景&#xff1a; 一、生成与编译 ​生成解决方案 Ctrl Shift B 一键编译整个解决方案&#xff0c;检查编译错误&#xff08;最核心的生成操作&#xff09;​编译当前文件 Ctrl F…...

学习记录-接口自动化python数据类型

1.字符串 str "字符串" str_1 字符串1 2.列表[ ] list [1,2,3,4,5,6] list_1 ["boy"&#xff0c;"girl"] 3.字典{ } key:value 键值对 dict {"name":"小林"&#xff0c;"age":20} 4.元组( ) tuple …...

大语言模型深度思考与交互增强

总则&#xff1a;深度智能交互的全面升级 在主流大语言模型&#xff08;LLM&#xff09;与用户的每一次交互中&#xff0c;模型需于回应或调用工具前&#xff0c;展开深度、自然且无过滤的思考进程。当模型判断思考有助于提升回复质量时&#xff0c;必须即时进行全方位的思考与…...

<C#> 详细介绍.NET 依赖注入

在 .NET 开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是一种设计模式&#xff0c;它可以增强代码的可测试性、可维护性和可扩展性。以下是对 .NET 依赖注入的详细介绍&#xff1a; 1. 什么是依赖注入 在软件开发里&#xff0…...

布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维

摘要&#xff1a;在商业竞争日益激烈的当下&#xff0c;布局与终局预判成为企业成功的关键要素。本文探讨了布局与终局预判的智慧性&#xff0c;强调其虽无法做到百分之百准确&#xff0c;但能显著提升思考能力。终局思维作为重要战略工具&#xff0c;并非一步到位的战略部署&a…...

构建面向大模型训练与部署的一体化架构:从文档解析到智能调度

作者&#xff1a;汪玉珠&#xff5c;算法架构师 标签&#xff1a;大模型训练、数据集构建、GRPO、自监督聚类、指令调度系统、Qwen、LLaMA3 &#x1f9ed; 背景与挑战 随着 Qwen、LLaMA3 等开源大模型不断进化&#xff0c;行业逐渐从“能跑通”迈向“如何高效训练与部署”的阶…...

告别循环!用Stream优雅处理集合

什么是stream&#xff1f; 也叫Stream流&#xff0c;是jdk8新增的一套API&#xff08;java.util.stream.*&#xff09;可以用于操作集合或者数组的数据。 优势&#xff1a;Stream流大量的结合了Lambda语法的风格编程&#xff0c;提供了一种更加强大&#xff0c;更加简单的方式…...

Linux电源管理、功耗管理 和 发热管理 (CPUFreq、CPUIdle、RPM、thermal、睡眠 和 唤醒)

1 架构图 1.1 Linux内核电源管理的整体架构 《Linux设备驱动开发详解&#xff1a;基于最新的Linux4.0内核》图19.1 1.2 通用的低功耗软件栈 《SoC底层软件低功耗系统设计与实现》 1.3 低功耗系统的架构设计&#xff1b;图1-3 2 系统级睡眠和唤醒管理 Linux系统的待机、睡眠…...

OSCP - Proving Grounds -FunboxEasy

主要知识点 弱密码路径枚举文件上传 具体步骤 首先是nmap扫描一下&#xff0c;虽然只有22&#xff0c;80和3306端口&#xff0c;但是事情没那么简单 Nmap scan report for 192.168.125.111 Host is up (0.45s latency). Not shown: 65532 closed tcp ports (reset) PORT …...

探索 Go 与 Python:性能、适用场景与开发效率对比

1 性能对比&#xff1a;执行速度与资源占用 1.1 Go 的性能优势 Go 语言被设计为具有高效的执行速度和低资源占用。它编译后生成的是机器码&#xff0c;能够直接在硬件上运行&#xff0c;避免了 Python 解释执行的开销。 以下是一个用 Go 实现的简单循环计算代码&#xff1a; …...

c++:构造函数(Constructor)与析构函数(Destructor)

目录 为什么我们需要构造函数&#xff1f; 什么是构造函数&#xff1f; &#x1f9ec; 本质&#xff1a;构造函数是“创建对象的一部分” 为什么 需要析构函数&#xff1f; 什么是析构函数&#xff1f; 析构函数的核心作用 ❗注意点 为什么我们需要构造函数&#xff1f…...

三周年创作纪念日

文章目录 回顾与收获三年收获的五个维度未来的展望致谢与呼唤 亲爱的社区朋友们&#xff0c;大家好&#xff01; 今天是 2025 年 4 月 14 日&#xff0c;距离我在 2022 年 4 月 14 日发布第一篇技术博客《SonarQube 部署》整整 1,095 天。在这条创作之路上&#xff0c;我既感慨…...

Vue 3 国际化实战:支持 Element Plus 组件和语言持久化

目录 Vue 3 国际化实战&#xff1a;支持 Element Plus 组件和语言持久化实现效果&#xff1a;效果一、中英文切换效果二、本地持久化存储效果三、element Plus国际化 vue3项目国际化实现步骤第一步、安装i18n第二步、配置i18n的en和zh第三步&#xff1a;使用 vue-i18n 库来实现…...

1.阿里云快速部署Dify智能应用

一、宝塔面板 宝塔面板是一款功能强大且易于使用的服务器管理软件&#xff0c;支持Linux和Windows系统&#xff0c;通过web端可视化操作&#xff0c;优化了建站流程&#xff0c;提供安全管理、计划任务、文件管理以及软件管理等功能。 1.1 宝塔面板的特点与优势 易用性 宝塔面…...

Ubuntu与windows时间同步

由于ubuntu每次重启后时间老是不对&#xff0c;所以使用ntp服务&#xff0c;让ubuntu作为客户端&#xff0c;去同步windows时间。 一、windows服务端配置 1、启用ntp服务 # 启动W32Time服务&#xff08;若未启动&#xff09; net start w32time # 配置服务为NTP模式 w32tm /…...

在pycharm配置虚拟环境和jupyter,解决jupyter运行失败问题

记录自己pycharm环境配置和解决问题的流程。 解决pycharm无法运行jupyter代码&#xff0c;仅运行import板块显示运行失败&#xff0c;但是控制台不输出任何错误信息&#xff0c;令人困惑。 遇到的问题是&#xff1a;运行代码左下角显示运行失败但是有没有任何的输出错误信息。 …...

Vue 技术解析:从核心概念到实战应用

Vue.js 是一款流行的渐进式前端框架&#xff0c;以其简洁的 API、灵活的组件化结构和高效的响应式数据绑定而受到开发者的广泛欢迎。本文将深入解析 Vue 技术的核心概念、原理和应用场景&#xff0c;帮助开发者更好地理解和使用 Vue.js。 一、Vue 的设计哲学与核心概念 &…...

Series和 DataFrame是 Pandas 库中的两种核心数据结构

Series 和 DataFrame 是 Pandas 库中的两种核心数据结构&#xff0c;它们各有特点和用途。理解它们之间的区别有助于更高效地进行数据分析和处理。以下是 Series 和 DataFrame 的主要区别&#xff1a; 1. 维度 Series&#xff1a;是一维的数组&#xff0c;可以存储任何类型的…...

关于异步消息队列的详细解析,涵盖JMS模式对比、常用组件分析、Spring Boot集成示例及总结

以下是关于异步消息队列的详细解析&#xff0c;涵盖JMS模式对比、常用组件分析、Spring Boot集成示例及总结&#xff1a; 一、异步消息核心概念与JMS模式对比 1. 异步消息核心组件 组件作用生产者发送消息到消息代理&#xff08;如RabbitMQ、Kafka&#xff09;。消息代理中间…...

利用 Python 进行股票数据可视化分析

在金融市场中&#xff0c;股票数据的可视化分析对于投资者和分析师来说至关重要。通过可视化&#xff0c;我们可以更直观地观察股票价格的走势、交易量的变化以及不同股票之间的相关性等。 Python 作为一种功能强大的编程语言&#xff0c;拥有丰富的数据处理和可视化库&#xf…...

【Docker】离线安装Docker

背景 离线安装Docker的必要性&#xff0c;第一&#xff0c;在目前数据安全升级的情况下&#xff0c;很多外网已经基本不好访问了。第二&#xff0c;如果公司有对外部署的需求&#xff0c;那么难免会存在对方只有内网的情况&#xff0c;那么我们就要做到学会离线安装。 下载安…...

kubectl命令补全以及oc命令补全

kubectl命令补全 1.安装bash-completion 如果你用的是Bash(默认情况下是)&#xff0c;先安装补全功能支持包 sudo apt update sudo apt install bash-completion -y2.为kubectl 启用补全功能 会话中临时&#xff1a; source <(kubectl completion bash)持久化配置&#x…...

《 C++ 点滴漫谈: 三十三 》当函数成为参数:解密 C++ 回调函数的全部姿势

一、前言 在现代软件开发中&#xff0c;“解耦” 与 “可扩展性” 已成为衡量一个系统架构优劣的重要标准。而在众多实现解耦机制的技术手段中&#xff0c;“回调函数” 无疑是一种高效且广泛使用的模式。你是否曾经在编写排序算法时&#xff0c;希望允许用户自定义排序规则&a…...