storage封装
1.先简单讲讲storage的基础
cookie遗留问题:
1:大小的限制:4KB 不能接受大数据
2:带宽的限制:cookie必须服务器和客户端数据会进行同步,
过时,会去 通知服务器清楚cookie数据
3:如果不加密的传输非常不安全
4:操作是非常复杂,document.cookie进行操作
优点:会根据时间自动清楚数据.时效作用
storage:
1:存储的空间 5MB < storage < 10MB
2:没带宽限制
3:操作简单
4:独立的存储空间但是storage不能替代cookie。
storage的分类
会话级别:sessionStorage
本地存储:localStorage
常用的方法:
设值:setItem(key,value);
取值:getItem(key,value)
删值:removeItem(key);
清除:clear();
个数:length取键:key(index),获取制定位置的键 index=0
方法封装
export const { localStorage, sessionStorage } = window
export class LocalStorage {
set(key, value, time) {
try {
const temp = { value, };
if (time && Number.isNaN(time)) {
temp.timeout = Date().now() - 1 + time * 1000; // 单位秒
}
localStorage.setItem(`v2-${key}`, JSON.stringify(temp));
} catch (e) {
// localstorage写满时,全清掉
if (e.name === 'QuotaExceededError') {
// 删除离过期时间最近的缓存
// 暂时删除
}
}
}
get(key) {
const temp = JSON.parse(localStorage.getItem(`v2-${key}`));
// 缓存不存在
if (!temp) return null;
const now = Date.now();
if (temp.timeout && temp.timeout < now) {
// 缓存过期
this.remove(key);
return '';
}
return temp.value
}
remove(key) {
localStorage.removeItem(`v2-${key}`)
}
clear(key) {
localStorage.removeItem(`v2-${key}`)
}
}
export class SessionStorage {
set(key, value, time) {
try {
const temp = { value, };
if (time && Number.isNaN(time)) {
temp.timeout = Date().now() - 1 + time * 1000; // 单位秒
}
sessionStorage.setItem(`v2-${key}`, JSON.stringify(temp));
} catch (e) {
// sessionStorage写满时,全清掉
if (e.name === 'QuotaExceededError') {
// 删除离过期时间最近的缓存
// 暂时删除
}
}
}
get(key) {
const temp = JSON.parse(sessionStorage.getItem(`v2-${key}`));
// 缓存不存在
if (!temp) return null;
const now = Date.now();
if (temp.timeout && temp.timeout < now) {
// 缓存过期
this.remove(key);
return '';
}
return temp.value
}
remove(key) {
sessionStorage.removeItem(`v2-${key}`)
}
clear(key) {
sessionStorage.removeItem(`v2-${key}`)
}
}
const storage = {
LocalStorage: new LocalStorage(),
SessionStorage: new SessionStorage()
}
export default storage
来源:CSDN
作者:无声的code
链接:https://blog.csdn.net/weixin_40542544/article/details/103856964