JS封装本地缓存的设置,读取,移除,清空方法及使用示例

我封装了一个JS通用的缓存管理对象,可以提供缓存的设置,读取,移除,清空操作,使用也很方便,封装方法的代码在最下方。

Q: 为什么不直接用原生的缓存方法,要封装?

A1:原生的缓存管理起来并不方便,这里设置一个,那里设置一个,设置的缓存多了以后,没有办法统一管理,并且读取的时候还需要使用JSON.parse才能读取对象;

A2:在我封装的缓存中,加入了模块的管理,例如user模块的缓存,专门放到user模块去维护,应用全局的缓存专门放到应用中维护;

A3:加入了字典说明,注释了每个模块的作用和属性,示例:
  字典说明:
  user 用户信息模块
  -userToken 用户唯一标识
  -userName 用户昵称
  -userInfo 用户详细信息

  app 全局模块
  -source 进入应用的来源标识
  -enterTime 进入应用的时间戳

如果我想清空用户模块user中的所有属性,调用 this.$KsStorage.remove('user') 就可以,不会影响到其它的缓存数据,也支持只清空某个模块的其中一个对象或者属性,例如 user 的 userToken ,调用 this.$KsStorage.remove('user','userToken') 就可以。

下面我们看看封装的说明。

封装JS缓存
  入参字段说明:
  group          模块分组                    必填
  key             模块指定字段             非必填
  value          模块指定字段的值      非必填
  
  使用示例:
  1、设置user模块的 userInfo 对象到缓存

  this.$KsStorage.set('user','userInfo',{name:1,head:2})

2、获取user模块的所有缓存或者获取 user 模块的的 userInfo 属性
 

 this.$KsStorage.get('user') or this.$KsStorage.get('user','userInfo')

3、移除 user 模块的所有缓存或者移除 user 模块的的 userInfo 属性

  this.$KsStorage.remove('user') or this.$KsStorage.remove('user','userInfo')

4、清空所有缓存

 this.$KsStorage.clear()

封装的 ksStorage.js 完整代码:

vue,html,uniapp,react 都可以用此封装方法,统一管理应用的本地缓存

/**缓存管理: 所有的缓存模板分组和字段说明都在本文件添加注释字段说明:group,  模块分组,必填key, 模块指定字段,非必填value, 模块指定字段的值,非必填使用示例:设置user模块的userInfo到缓存this.$KsStorage.set('user','userInfo',{name:1,head:2})获取user模块的所有缓存或者获取user模块的的userInfo属性this.$KsStorage.get('user') or this.$KsStorage.get('user','userInfo')移除user模块的所有缓存或者移除user模块的的userInfo属性this.$KsStorage.remove('user') or this.$KsStorage.remove('user','userInfo')清空所有缓存this.$KsStorage.clear()
**/
let KsStorage ={set:(group,key,value)=>{let obj =JSON.parse(localStorage.getItem(group))||{};obj[key] = value;localStorage.setItem(group, JSON.stringify(obj));},get:(group,key)=>{let obj = JSON.parse(localStorage.getItem(group))||{};return key?obj[key]:obj;},remove:(group,key)=>{if(key){let obj =JSON.parse(localStorage.getItem(group))||{};delete obj[key];  localStorage.setItem(group, JSON.stringify(obj));}else{localStorage.removeItem(group);}},clear:()=>{localStorage.clear();},
} 
export default KsStorage;

感觉还不错的话请点个收藏加点赞吧~  谢谢~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/241102.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机】数码管的静态与动态显示(含消影)

数码管在现实生活里是非常常见的设备,例如 这些数字的显示都是数码管的应用。 目录 静态数码管:器件介绍:数码管的使用:译码器的使用:缓冲器: 实现原理:完整代码: 动态数码管&#…

Docker 安装 MySQ

Docker 安装 MySQL MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。 1、查看可用的 MySQL 版本 访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tabtags 。 可以通过 Sort b…

写点东西《什么是网络抓取?》

写点东西《什么是网络抓取?》 什么是网络抓取? 网络抓取合法吗? 什么是网络爬虫,它是如何工作的? 网络爬虫示例 网络抓取工具 结论 您是否曾经想同时比较多个网站上同一件商品的价格?或者自动提取您最喜欢的…

生成式对抗网络GAN

Generative Adversarial Nets由伊恩古德费洛(Ian J.Goodfellow)等人于2014年发表在Conference on Neural Information Processing Systems (NeurIPS)上。NeurIPS是机器学习和计算神经科学领域的顶级国际学术会议之一。 1. GAN在哪些领域大放异彩 图像生…

Rust之旅 - Rust概念、Windows安装、环境配置

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项目…

手动添加测试用例配置输入参数和期望值

1.选中函数,点击右键选择插入测试用例。这里所选择的插入测试用例区别于之前的测试用例的地方在于,这里插入测试用例是手动配置的,之前的是自动生成的。手动配置可以自定义选择输入参数和期望值。 2.添加测试用例后,点击测试用例&…

克魔助手工具详解、数据包抓取分析、使用教程

目录 摘要 引言 克魔助手界面 克魔助手查看数据捕获列表 数据包解析窗口 数据包数据窗口 克魔助手过滤器表达式的规则 抓包过滤器实例 总结 参考资料 摘要 本文介绍了克魔助手工具的界面和功能,包括数据包的捕获和分析,以及抓包过滤器的使用方…

电梯节能落座-智慧停车场️,电梯不仅可载人也可以载汽车!

电梯不仅可载人也可以载汽车哦! 在北京市丰台区,有这么一个智慧停车场🅿️ ,共298个停车位,全部智能一体化,简直是“豪华” “智能” 的象征。 523能源:小伍,你跑题了... 小伍&am…

MySQL核心SQL

一.结构化查询语言 SQL是结构化查询语言(Structure Query Language),它是关系型数据库的通用语言。 SQL 主要可以划分为以下 3 个类别: DDL(Data Definition Languages)语句 数据定义语言,这…

Discuz论坛网站登录账号操作慢,必须强制刷新才会显示登录怎么办?

飞飞发现在登录服务器大本营账号时,输入账号密码登录后还是显示的登录框,强制刷新后才知道已经登录了,每次都要刷新才能正常显示,非常影响用户体验,于是在网上找了类似的问题故障解决方法,目前问题已经解决…

AWS边缘媒体安全交付方案

企业如何在AWS上的边缘站点,安全的将优质视频内容交付给用户,并且禁止哪些未经过授权的访问?九河云将基于AWS平台提供边缘媒体安全交付解决方案 解决方案详情 在通过 Amazon CloudFront 交付时,免受未经授权的访问。基于添加到交…

多标签节点分类

Multi-Label Node Classification on Graph-Structured Data,TMLR’23 Code 学习笔记 图结构数据的多标签分类 节点表示或嵌入方法 通常会生成查找表,以便将相似的节点嵌入的更近。学习到的表示用作各种下游预测模块的输入特征。 表现突出的方法是基于随机游走(ran…

docker部署项目,/var/lib/docker/overlay2目录满了如何清理?

docker部署项目,/var/lib/docker/overlay2目录满了如何清理? 一、问题二、解决1、查看 /var/lib/docker 目录(1)、containers 目录(2)、volumes 目录(3)、overlay2 目录 2、清理&…

台灯护眼有用吗?分享备考专用的护眼台灯

说到台灯相信大家都不陌生,如今基本是每个家庭都会备上一台。很多家长会买上一台给孩子学习使用,还有些学生党、办公族夜晚学习工作时也会用得上它。但普通的台灯会出现光照范围不够大、光线过度集中、光线均匀度不足、产生眩光等问题,可能会…

基于 IDEA 进行 Maven 依赖管理

一、依赖管理概念 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等…

Redis--Zset使用场景举例(滑动窗口实现限流)

文章目录 前言什么是滑动窗口zset实现滑动窗口小结附录 前言 在Redis–Zset的语法和使用场景举例(朋友圈点赞,排行榜)一文中,提及了redis数据结构zset的指令语法和一些使用场景,今天我们使用zset来实现滑动窗口限流&a…

IOS-高德地图SDK接入-Swift

申请key 这个要前往高德开发平台注册成为个人开发者然后在控制台创建一个应用: 高德开发平台 注册步骤就不写了,写一下创建应用的步骤: 1、点击应用管理——>我的应用 2、点击右上角的创建新应用 3、输入内容: 4、点击添加ke…

【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?

文章目录 一. “解耦”概述二. 如何给代码“解耦”?1. 封装与抽象2. 中间层2.1. 引入中间层能**简化模块或类之间的依赖关系**。2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。 3. 模块化4. 其他设计思想和原则4.…

【STM32】| 02——常用外设 | I2C

系列文章目录 【STM32】| 01——常用外设 | USART 【STM32】| 02——常用外设 | I2C 失败了也挺可爱,成功了就超帅。 文章目录 前言1. 简介2. I2C协议2.1 I2C物理连接2.2 I2C通信协议2.2.1 起始和停止信号2.2.2 数据有效性2.2.3 数据传输格式2.2.4 从机地址/数据方…