vue之浏览器存储方法封装实例

7d9bd202212011734213512.jpeg

我们在项目中通常会对缓存进行一些操作,为了便于全局调用,会对缓存的设置、获取及删除方法进行封装成一个工具类。

首先我们在src目录下创建一个plugins文件夹,在plugins下创建cache文件夹并创建index.js,代码如下:

const sessionCache = {set(key, value) {if (!sessionStorage) {return;}if (key != null && value != null) {sessionStorage.setItem(key, value);}},get(key) {if (!sessionStorage) {return null;}if (key == null) {return null;}return sessionStorage.getItem(key);},//对象或者数组的存取setJSON(key, jsonValue) {if (jsonValue != null) {this.set(key, JSON.stringify(jsonValue));}},getJSON(key) {const value = this.get(key);if (value != null) {return JSON.parse(value);}},remove(key) {sessionStorage.removeItem(key);},// 检测缓存是否存在has(key){return sessionStorage.getItem(key) ? true:false;},};const localCache = {set(key, value) {if (!localStorage) {return;}if (key != null && value != null) {localStorage.setItem(key, value);}},get(key) {if (!localStorage) {return null;}if (key == null) {return null;}return localStorage.getItem(key);},setJSON(key, jsonValue) {if (jsonValue != null) {this.set(key, JSON.stringify(jsonValue));}},getJSON(key) {const value = this.get(key);if (value != null) {return JSON.parse(value);}},remove(key) {localStorage.removeItem(key);},// 检测缓存是否存在has(key){return localStorage.getItem(key) ? true:false;},setItem(params){let obj = {name:'',value:'',expires:"",startTime:new Date().getTime()}let options = {};//将obj和传进来的params合并Object.assign(options,obj,params);if(options.expires){//如果options.expires设置了的话//以options.name为key,options为值放进去localStorage.setItem(options.name,JSON.stringify(options));}else{//如果options.expires没有设置,就判断一下value的类型let type = Object.prototype.toString.call(options.value);//如果value是对象或者数组对象的类型,就先用JSON.stringify转一下,再存进去if(Object.prototype.toString.call(options.value) == '[object Object]'){options.value = JSON.stringify(options.value);}if(Object.prototype.toString.call(options.value) == '[object Array]'){options.value = JSON.stringify(options.value);}localStorage.setItem(options.name,options.value);}}};export default {/*** 会话级缓存*/session: sessionCache,/*** 本地缓存*/local: localCache};
复制代码

Copy

挂载到vue原型上全局使用

import cache from '@/plugins/cache/index'
Vue.prototype.$cache = cache
复制代码

Copy

使用方法

// localstroge的缓存
this.$cache.local.has(key) //判断有没有缓存
this.$cache.local.setJSON(key,value); //存储
let key = this.$cache.local.getJSON('key'); //获取// sessionStorage
this.$cache.session.has(key) 
this.$cache.session.setJSON( key,value); 
let key = this.$cache.session.getJSON('key'); 

Copy

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

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

相关文章

腾讯云服务器带宽计费模式_按流量和带宽收费说明

腾讯云服务器带宽计费模式分为“按带宽计费”和“按使用流量”两种计费模式:按带宽计费是预付费,一次性购买固定带宽值,先付费;按使用流量计费是先使用后付费,根据云服务器公网出方向实际产生流量来计算。如何选择带宽…

基于token的鉴权机制-JWT

在实际开发项目中,由于Http是一种无状态的协议,我们想要记录用户的登录状态,或者为用户创建身份认证的凭证,可以使用Session认证机制或者JWT认证机制。 什么是JWT? 网络应用环境间传递声明执行的一种基于JSON的开放标准。适用于…

Windows 下 Sublime Text 2.0.2 下载及配置

1 下载地址: https://www.sublimetext.com/2 Sublime Text 2.0.2 (此版本选择了 portable version),直接解压就可以使用。 https://download.sublimetext.com/Sublime Text 2.0.2.zip 2 配置Python相关环境 (前提 Pyhon 已加入环境变量) 2.1 新建 py …

公司会倒闭,但大模型肯定不会

咋玩抖音的我,前几天在抖音上发了一张图片,没想到竟然有1000多的播放量。 当然这个播放量不算高,甚至在抖音的体系里属于很低的,但是比我预料的可能只有个位数的播放量是高了不少。 这张图片是我用某国产 AI 软件生成的&#xff…

谈谈 MySQL 事务隔离级别

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

接口调用微信公众号群发功能,绕过微信自身限制

微信群发功能要求要微信认证。微信认证要求要企业账号、而且需要认证费用。 本篇文章教大家非微信认证账号如何群发公众号信息 本篇文章基于python语言开发,其他的语言一样的方式,不需要拘泥于语言 注意事项: 要求有微信公众平台登陆状态,也就是Cookie数据, 如何通过Py…

QEMU显示虚拟化的几种选项

QEMU可以通过通过命令行"-vga type"选择为客户机模拟的VGA卡的类别,可选择的类型有多个: -vga typeSelect type of VGA card to emulate. Valid values for type arecirrusCirrus Logic GD5446 Video card. All Windows versions starting from Windows 95 should …

echarts 中如何添加左右滚动条 数据如何进行堆叠如何配置那些数据使用那个数据轴

左右滚动条的效果 此项的具体配置可参考 https://echarts.apache.org/zh/option.html#dataZoom-inside.moveOnMouseWheel dataZoom: [{id: dataZoomX,type: inside,// start: 0,// end: this.xAxis.length > 5 ? 10 : 100,startValue: this.xAxis.length > 5 ? 5 : 0,/…

【算法挨揍日记】day26——53. 最大子数组和、918. 环形子数组的最大和

53. 最大子数组和 53. 最大子数组和 题目描述: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 解题思路: 状态…

五、hdfs常见权限问题

1、常见问题 2、案例 (1)问题 (2)hdfs的超级管理员 (3)原因 没有使用Hadoop用户对hdfs文件系统进行操作。 在Hadoop文件系统中,Hadoop用户相当于Linux系统中的root用户,是最高级别用…

macOS 后台项目已添加 “Google Updater添加了可在后台运行的项目。你可以在“登陆项”设置中管理

文章目录 Intro解决查看三个文件夹分析 & 操作确认结果是否生效 Intro 我的macbook上经常弹出这样的通知狂: macOS 后台项目已添加 “Google Updater添加了可在后台运行的项目。你可以在“登陆项”设置中管理 不胜其扰,终于决定禁用它。以下为方法…