Skip to content

网页存储数据 cookie、sessionStorage、localStorage

更新于: at 07:58
/**
 * 获取 cookie
 * @param k 键名
 * @returns cookie k 键值
 */
export const getCookie = (k: string): string | undefined => {
  const keys = document.cookie.split(/;\s*/).map((key) => key.split("="));
  for (const [_k, _v] of keys) {
    if (_k === k) return _v;
  }
};
/**
 * 设置 cookie
 * @param k 键名
 * @param v 键值(无需 stringiiy)
 * @param exdays 过期时间
 */
export const setCookie = (k: string, v: string, exdays?: number): void => {
  // MaxAge 为 0 时表示浏览器不保存该 Cookie。
  // maxAge 为负数的 Cookie,为临时性 Cookie,不会被持久化,不会被写到 Cookie 文件中。
  // Cookie 信息保存在浏览器内存中,因此关闭浏览器该 Cookie 就消失了。Cookie 默认的 maxAge 值为 - 1
  const maxAge = exdays ? `max-age=${exdays * 60 * 60 * 24}` : "";
  document.cookie = `${k}=${v};${maxAge}`;
};
/**
 * 移除 cookie
 * @param k 键名
 */
export const removeCookie = (k: string): void => {
  setCookie(k, "", 0);
};
/**
 * 清除 cookie
 */
export const clearCookie = (): void => {
  const keys = document.cookie.match(/[^ =;]+(?==)/g);
  if (keys) {
    for (let i = keys.length; i--; ) {
      removeCookie(keys[i]);
    }
  }
};

/**
 * 获取临时会话数据
 * @param k 键名
 * @returns 临时会话 k 键值
 */
export const getSessionStorage = (k: string): string | null => {
  const v = sessionStorage.getItem(k);
  return v !== null ? JSONParse(v) : v;
};
/**
 * 存储临时会话数据
 * @param k 键名
 * @param v 键值(无需 stringiiy)
 */
export const setSessionStorage = (k: string, v: any): void => {
  sessionStorage.setItem(k, JSON.stringify(v));
};
/**
 * 移除临时会话数据
 * @param k 键名
 */
export const removeSessioStorage = (k: string): void => {
  sessionStorage.removeItem(k);
};
/**
 * 清除临时会话数据
 */
export const clearSessioStorage = (): void => {
  sessionStorage.clear();
};

/**
 * 获取本地会话数据
 * @param k 键名
 * @returns 本地会话 k 键值
 */
export const getLocalStorage = (k: string): any => {
  const v = localStorage.getItem(k);
  return v !== null ? JSONParse(v) : v;
};
/**
 * 存储本地会话数据
 * @param k 键名
 * @param v 键值(无需 stringiiy)
 */
export const setLocalStorage = (k: string, v: any): void => {
  localStorage.setItem(k, JSONStringify(v));
};
/**
 * 移除本地会话数据
 * @param k 键名
 */
export const removeLocalStorage = (k: string): void => {
  localStorage.removeItem(k);
};
/**
 * 清除本地会话数据
 */
export const clearLocalStorage = (): void => {
  localStorage.clear();
};