常用工具函数 (储存篇)

178 阅读1分钟

Cookie 的存储

import { Message } from 'element-ui'
import throttle from '../utils/debounce'
const setCookie = function(name, value, expiredays) {
    let exdate = new Date()
    exdate.setDate(exdate.getDate() + expiredays)
    document.cookie = name + '=' + value + (expiredays == null ? '' : ';expires=' + exdate.toGMTString())
    document.cookie = name + '=' + value + (expiredays == null ? ';SameSite=None;Secure=true' : ';SameSite=None;Secure=true;expires=' + exdate.toGMTString())
}
const getCookie = function(name) {
    let nameData = name + '='
    let allcookies = document.cookie.split(';')
    for (let i = 0; i < allcookies.length; i++) {
        let c = allcookies[i].trim()
        if (c.indexOf(nameData) == 0) {
            return c.substring(nameData.length, c.length)
        }
    }
    return ''
}
const delCookie = function(name, type) {
    var exp = new Date()
    exp.setTime(exp.getTime() - 1)
    if (type != 'noCoo') {
        throttle(() => {
            Message.error('信息过期,请重新登录!')
        }, 200)
    }

    var cval = getCookie(name)

    if (cval !== null) {
        document.cookie = name + '=;expires=' + exp.toGMTString()
    }
}

// 清除所有cookie
const clearAllCookie = function() {
    let date = new Date()
    date.setTime(date.getTime() - 10000)
    // eslint-disable-next-line no-useless-escape
    let keys = document.cookie.match(/[^ =;]+(?=\=)/g)

    if (keys) {
        for (let i = keys.length; i--; ) {
            document.cookie = keys[i] + '=0;path=/;expire=' + date.toGMTString()
        }
    }
}

const deleteCookies = function() {
    let keys = document.cookie.match(/[^ =;]+(?==)/g)
    if (keys) {
        for (var i = keys.length; i--; ) {
            // 清除当前域名下的,例如 .m.ratingdog.cn
            if (keys[i] !== 'userData') {
                document.cookie = keys[i] + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString()
            }
        }
    }
}

export { setCookie, getCookie, delCookie, clearAllCookie, deleteCookies }

localStorage 存储

export const localStorage={
  // 获取
  getItem(key){
    try{
      let value=window.localStorage.getItem(key);
      if(!value||value===''){
        return null;
      }
      return JSON.parse(value);
    }
    catch(e){
      return null
    }
  },

  // 添加
  setItem(key,value){
    window.localStorage.setItem(key,JSON.stringify(value));
  },

  // 删除
  removeItem(key){
    window.localStorage.removeItem(key);
  },

  // 清除
  clear(){
    window.localStorage.clear()
  },

  // 长度
  length(){
    return window.localStorage.length;
  }


sessionStorage 存储

export const sessionStorage={
  // 获取
  getItem(key){
    try{
      let value=window.sessionStorage.getItem(key);
      if(value===null||value===undefined||value===''){
        return null;
      }
      return JSON.parse(value);
    }
    catch(e){
      return null
    }
  },

  // 添加
  setItem(key, value) {
    window.sessionStorage.setItem(key,JSON.stringify(value));
  },

  // 删除
  removeItem(key) {
    window.sessionStorage.removeItem(key);
  },

  // 清除
  clear(){
    window.sessionStorage.clear();
  },

  // 长度
  length(){
    return window.localStorage.length;
  }
}