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

Vue 可配置化的路由缓存(Vu2 Vue3)

Vue 可配置化的路由缓存(Vu2 & Vue3)

1 介绍

在Vue的项目当中,路由缓存是一个比较常见的功能,譬如,从列表页面进入到详情页面,返回到列表页面时,如果可以保持列表的状态,那用户效果就会好很多。

Vue当中的路由缓存是通过内置组件 keepAlive 实现的,在项目规模比较小,代码量不多的时候,我们还可以通过手动去操作数据来进行路由缓存,但是一旦项目的规模变大,代码量和组件数量增多,如果没有一个方便的方式去配置和自动进行路由缓存,那路由缓存的功能就会变得很麻烦,并且容易出Bug。

这里提供了一份可配置化的路由缓存,只需要在配置路由的时候进行缓存的配置,后续就不需要再进行任何操作了。

注意:仓库当中存在了两个项目,分别为Vue2和Vue3,可以根据自身需要进行查看。

2 相关技术栈

2.1 Vue2

  • Vue2
  • Vuex
  • VueRouter
  • ElementUI

2.2 Vue3

  • Vue3
  • Pinia
  • VueRouter
  • ElementPlus

3 思路解析

这里大概解析一下整个路由缓存的思路:
关键文件有以下几个:

  • src/components/PageView.vue
  • src/router/index.js
  • src/utils/vueKeepAliveUtil.js
  • src/main.js

首先我们需要创建一个storestore当中存放了cachedViews,即需要缓存的路由的名称,后续我们需要在路由拦截器当中对cachedViews进行添加和删除的操作

随后我们需要创建一个PageView组件,PageView当中就是读取store中的数据,并且使用keepAlive组件,进行路由缓存,准备功能已经完成了,后续我们只需要进行操作cachedViews,就可以实现路由的缓存了

<template><div id="page-view"><keep-alive :include="cachedViews"><router-view></router-view></keep-alive></div>
</template><script>
export default {name: "PageView",computed: {cachedViews(){return this.$store.state.cachedViews;}},
}
</script>

准备工作完成之后,我们需要去配置路由,详细的配置可以参考项目中的路由配置,meta中的titlehiddencacheFromactiveMenu都有相关的注释信息,用于实现菜单组件、菜单高亮、路由缓存

最重要的是vueKeepAliveUtil,此文件当中,进行了路由的拦截,并且根据路由信息中的meta信息,来决定是否对路由进行缓存,详细代码如下,可以结合代码中的注释进行理解

import router from "@/router";
import store from "@/store";router.beforeEach((to, from, next) => {// 如果to需要进行缓存,则直接进行缓存,无论是从哪里进入,都先进行缓存if (to.meta && to.meta.keepAlive) {store.commit("ADD_CACHEVIEW", to);}// 如果to的cacheFrom存在,并且cacheFrom不包含from的name,说明是从不需要缓存to的页面进入to的,这个时候就删除to的缓存// 从其他菜单项,进入keepAlive的页面,需要删除进入页面的缓存if (to.meta.cacheFrom && !to.meta.cacheFrom.includes(from.name)) {store.commit("DELETE_CACHEVIEW", to);}// 如果从需要缓存的页面,跳转到其他页面,则先缓存From// 例如:从list跳转detail,缓存listif (from.meta && from.meta.keepAlive) {store.commit("ADD_CACHEVIEW", from);}// 放行路由setTimeout(() => next());
});

最后需要在main.js当中去引入vueKeepAliveUtil.js,使其生效

4 详细代码

具体代码,请访问GitHub仓库
GitHub仓库地址: https://github.com/Jin0811/KeepAlive

相关文章:

Vue 可配置化的路由缓存(Vu2 Vue3)

Vue 可配置化的路由缓存&#xff08;Vu2 & Vue3&#xff09; 1 介绍 在Vue的项目当中&#xff0c;路由缓存是一个比较常见的功能&#xff0c;譬如&#xff0c;从列表页面进入到详情页面&#xff0c;返回到列表页面时&#xff0c;如果可以保持列表的状态&#xff0c;那用户…...

Linux VPU驱动

1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 概述 VPU 是用来进行图像、视频数据进行硬件编、解码的硬件模块。内部集成了 Encoder、Decoder 功能部件进行图像、视频数据进行硬件编、解码&a…...

spring 笔记

一、spring概述 1.1 spring介绍 spring是一个轻量级的控制反转和面向切面的容器框架&#xff0c;用来解决企业项目开发的复杂度问题---解耦 轻量级&#xff1a;体积小&#xff0c;对代码没有侵入性控制反转&#xff1a;IOC inverse of control&#xff0c; 把创建对象的工作交…...

Java日志框架学习

首先&#xff0c;Java日志框架可以分为两类&#xff1a;门面型日志框架和记录型日志框架。 门面型日志框架 JCL&#xff1a;Java日志接口&#xff0c;后更名为Commons LoggingSLF4J&#xff1a;是一套简易Java日志门面&#xff0c;本身并无日志的实现 记录型日志框架 JUL&a…...

基础面试题:堆和栈的区别

面试题&#xff1a;堆和栈的区别&#xff08;往往讲的是内存zha&#xff09; 为什么说访问栈栈比访问堆快些&#xff1f; 目录 一、数据结构中的堆栈 1、数据结构中的堆 1&#xff09;堆的定义 2&#xff09;堆的效率 2、 数据结构中的栈 二、内存中的堆栈 1、内存堆的定义…...

(干货教程)在VSCode并使用chatgtp插件编写CC++语言程序

&#xff08;干货教程&#xff09;在VSCode并使用chatgtp插件编写CC语言程序 下载并安装VSCODE 第1步&#xff0c;下载VSCODE https://code.visualstudio.com/Download 第2步&#xff0c;安装VSCODE 安装过程较简单&#xff0c;这里省略。 安装好后效果如图&#xff1a…...

【思维模型】概率思维的价值:找到你的人生算法,实现阶级跃迁!

把同样公平的机会放在放在很多人面前,不同的人生算法,会得到迥然不同的结果。 概率思维是什么? 【ChatGPT】概率思维是一种通过使用数学模型来思考和评估不确定性事件的方法。它通过计算不同可能性的概率来预测事件的结果,并评估风险和机会。 概率思维的价值在于它可以帮…...

SpringBoot + kotlin/java + Mybatis-Plus +Sqlite + Gradle多模块项目

前言 我自己的业务项目&#xff0c;先用kotlinspringboot 搭建&#xff0c; 发现gradle支持kts脚本&#xff0c;于是我就搭建试试。我就选用了最流行的Sqlite内嵌数据库,虽然H2也不错&#xff0c;但是Sqlite才是最流行的。orm框架我还是选择了Mybatis-Plus &#xff0c;为此中…...

Docker 容器与容器云读书笔记(一)

最近都没时间看书&#xff0c;闲暇之余看看书&#xff0c;写写笔记&#xff0c;记录一下这难得的时光。 docker容器的出现 2013年初&#xff0c; 一个名字从云计算领域横空出世&#xff0c;并在整个IT行业激起千层浪&#xff0c;这就是Docker。Docker选择容器作为核心和基础&…...

软件设计(九)

软件设计&#xff08;八&#xff09;https://blog.csdn.net/ke1ying/article/details/128954569?spm1001.2014.3001.5501 81、模块A将学生信息&#xff0c;即学生姓名、学号、手机等放到一个结构体系中&#xff0c;传递给模块B&#xff0c;模块A和B之间的耦合类型为 什么耦合…...

FoveaBox原理与代码解析

paper&#xff1a;FoveaBox: Beyond Anchor-based Object Detectorcode&#xff1a;https://github.com/taokong/FoveaBox背景基于anchor的检测模型需要仔细设计anchor&#xff0c;常用方法之一是根据特定数据集的统计结果确定anchor的number、scale、ratio等&#xff0c;但这种…...

Linux内核启动(1,0.11版本)启动BIOS与加载内核

从电源到启动BIOS 从我们按下启动电源到BIOS&#xff0c;按下电源–>主板会向电源组发出信号–> 接受到信号后&#xff0c;当主板收到电源正常启动信号后&#xff0c;主板会启动CPU(CPU重置所有寄存器数据&#xff0c;并且初始化数据)&#xff0c;比如32位系统&#xff…...

python制作贪吃蛇小游戏,畅玩无限制

前言 大家早好、午好、晚好吖 ❤ ~ 现在这年头&#xff0c;无论玩个什么游戏都有健康机制&#xff0c; 这让我们愉悦玩游戏得步伐变得承重起来&#xff0c; 于是无聊之下我写了个贪吃蛇小游戏&#xff0c;来玩个快乐 代码展示 导入模块 import random import sys import …...

MySQL-InnoDB数据页结构浅析

在MySQL-InnoDB行格式浅析中&#xff0c;们简单提了一下 页 的概念&#xff0c;它是 InnoDB 管理存储空间的基本单位&#xff0c;一个页的大小一般是 16KB 。 InnoDB 为了不同的目的而设计了许多种不同类型的 页&#xff1a; 存放表空间头部信息的页存放 Insert Buffer信息的…...

Java、JSP职工人事管理系统设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;现在随着我们这个社会的计算机技术的快速发展&#xff0c;计算机在企业管理中得到普遍的应用&#xff0c;现在我们利用计算机在实现企业职工的管理越来越重要。当今社会是快速发展的信息社会&#xff0c;自动化信息的作用也变得越来…...

数据结构与算法这么难,为什么我们还要学习?

文章目录前言1. 数据结构与算法是什么&#xff1f;2. 为什么数据结构与算法很难&#xff1f;3. 如何系统学习数据结构与算法&#xff1f;&#x1f351; 复杂度&#x1f351; 线性表&#x1f351; 树形结构&#x1f351; 图&#x1f351; 排序&#x1f351; 字符串&#x1f351;…...

剑指 Offer 52. 两个链表的第一个公共节点

摘要 剑指 Offer 52. 两个链表的第一个公共节点 一、双指针解法 使用双指针的方法&#xff0c;可以将空间复杂度降至 O(1)。只有当链表 headA headB都不为空时&#xff0c;两个链表才可能相交。因此首先判断链表 headA和 headB是否为空&#xff0c;如果其中至少有一个链表为…...

可以写进简历的软件测试电商项目,不进来get一下?

前言 说实话&#xff0c;在找项目的过程中&#xff0c;我下载过&#xff08;甚至付费下载过&#xff09;N多个项目、联系过很多项目的作者&#xff0c;但是绝大部分项目&#xff0c;在我看来&#xff0c;并不适合你拿来练习&#xff0c;它们或多或少都存在着“问题”&#xff…...

蓝桥杯-算法-印章问题

这个题真的顶啊&#xff01;思路&#xff1a;n种图案&#xff0c;m张印章&#xff0c;每一个图案的概率是1/n&#xff0c;这个概率以后用P表示首先我们定义dp[i][j]是买了i张印章&#xff08;对应于上面的m&#xff09;&#xff0c;凑齐j种图案的概率&#xff08;对应于上面的n…...

戴尔游匣G16电脑U盘安装系统操作教程分享

戴尔游匣G16电脑U盘安装系统操作教程分享。有用户在使用戴尔游匣G16电脑的时候遇到了系统问题&#xff0c;比如电脑蓝屏、自动关机重启、驱动不兼容等问题。遇到这些问题如果无法进行彻底解决&#xff0c;我们可以通过U盘重新安装系统的方法来解决&#xff0c;因为这些问题一般…...

3分钟快速上手:如何用res-downloader高效下载视频号资源

3分钟快速上手&#xff1a;如何用res-downloader高效下载视频号资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在当今数…...

Godot开发者必备:awesome-godot资源库高效使用指南

1. 项目概述&#xff1a;一个开源游戏引擎的“宝藏库” 如果你正在使用或考虑使用 Godot 引擎进行游戏开发&#xff0c;那么你很可能已经听说过 awesome-godot 这个项目。它不是一个可以直接运行的软件&#xff0c;也不是一个插件&#xff0c;而是一个由社区共同维护的、结构…...

5步解决网易云音乐NCM文件难题:ncmdumpGUI实战指南

5步解决网易云音乐NCM文件难题&#xff1a;ncmdumpGUI实战指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的情况&#xff1a;在网易…...

为什么92%的DeepSeek私有化部署在K8s上遭遇OOMKilled?——GPU内存隔离、vLLM适配与cgroups v2调优三重解法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek私有化部署的Kubernetes现状与OOMKilled困局 当前&#xff0c;DeepSeek系列大模型在企业私有化场景中广泛采用Kubernetes进行容器化编排部署。然而&#xff0c;实际落地过程中&#xff0c;内存…...

Kafka高效的原因

Kafka高效的原因Kafka的高效性源于其独特的架构设计和多项优化技术&#xff0c;以下是关键因素&#xff1a;分布式架构与分区机制 Kafka采用分布式设计&#xff0c;主题&#xff08;Topic&#xff09;被划分为多个分区&#xff08;Partition&#xff09;&#xff0c;每个分区可…...

共筑智能传播信息安全域,新华社国家重点实验室与北京时光不语达成合作

新华社媒体融合生产技术与系统国家重点实验室与北京时光不语科技有限公司&#xff08;TIMUS.AI&#xff09;正式建立研发生态伙伴关系&#xff0c;并联合推出面向智能传播环境的“新华智信感知平台”&#xff0c;深化智能传播领域科研创新与成果转化&#xff0c;共同构建负责任…...

书匠策AI课程论文一键生成?我替你们踩了一遍,真香预警!

各位论文困难户们&#xff0c;先别划走&#xff01; 今天不聊别的&#xff0c;就聊一个让我这个老博主都直呼"离谱"的东西——书匠策AI的课程论文功能。我知道你们一看到AI写论文就条件反射觉得是割韭菜&#xff0c;但这次&#xff0c;我是真的被圈粉了。 先说结论…...

Namespace 为什么不够用了:容器逃逸的技术原理与真实攻击链

Namespace 为什么不够用了&#xff1a;容器逃逸的技术原理与真实攻击链 一、共享内核的致命假设 Docker 容器的核心隔离机制是 Linux Namespace cgroups。Namespace 让进程误以为自己独占 PID、网络和文件系统&#xff0c;cgroups 限制 CPU、内存、IO 的使用上限。这套机制将部…...

51单片机项目进阶:给电子秤加上JQ8400语音播报,一线串口控制到底有多方便?

51单片机电子秤语音播报模块深度实战&#xff1a;从JQ8400-FL选型到一线串口控制全解析 当你已经完成基础电子秤项目&#xff0c;能够准确显示重量并计算价格时&#xff0c;如何让这个设备"会说话"&#xff1f;语音交互功能的加入不仅能提升用户体验&#xff0c;更能…...

开发预告:关于改造Hermes-agent这件事,我想说的比上一篇多得多

先声明一点&#xff1a;这不是什么技术布道&#xff0c;更不是产品软文。这篇文章里写的东西&#xff0c;要么是我花了真金白银和睡眠时间换来的&#xff0c;要么是我接下来要去踩的坑。你要觉得哪里不对&#xff0c;直接怼。你要觉得哪里说到你心坎里了&#xff0c;欢迎一起搞…...