底层工具类,storage封装

こ雲淡風輕ζ 提交于 2020-01-26 02:13:43

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!