UNPKG

ph-utils

Version:

js 开发工具集,前后端都可以使用(commonjs和es module)

74 lines (73 loc) 2.19 kB
function getStorage(storage = "session") { return storage === "session" ? sessionStorage : localStorage; } /** * 存储值到 Storage 中 * @param key 设置的 key * @param value 设置的值 * @param [option.storage] session 或 local, 默认: session * @param [option.expire] 数据有效期, 单位秒, 默认: -1 - 永久存储 * * @example <caption>1. 存储到 SessionStorage</caption> * set("key", "value"); * * @example <caption>2. 存储到 LocalStorage</caption> * set("key", "value", { storage: "local" }); */ export function set(key, value, option) { const opts = { expire: -1, storage: "session", ...option, }; const saveData = JSON.stringify({ value, time: Date.now(), expire: opts.expire === -1 ? -1 : Math.floor(Date.now() / 1000) + opts.expire, }); getStorage(opts.storage).setItem(key, saveData); } /** * 清空所有的缓存内容 * @param storage 待清空的缓存对象 */ export function clear(storage) { getStorage(storage).clear(); } /** * 删除存储到 Storage 中的数据 * @param key * @param storage */ export function remove(key, storage) { getStorage(storage).removeItem(key); } /** * 从 Storage 中取出数据 * @param key 保存时的 key * @param defaultValue 没有数据时的默认值 * @param [option.delete] 是否在取出后,删除数据,默认:false - 取出后删除数据 * @param [option.storage] 使用的 Storage ,可以是 localStorage、sessionStorage, 默认: localStorage、sessionStorage * @returns Storage 中 key 对应的数据 */ export function get(key, defaultValue, option) { const opts = (option || { delete: false }); const storage = getStorage(opts.storage); let data = storage.getItem(key); if (data == null) { return defaultValue || null; } data = JSON.parse(data); let d = data.value; if (data.expire !== -1) { // 数据过期 if (Math.floor(Date.now() / 1000) > data.expire) { d = null; storage.removeItem(key); } } if (opts.delete) { storage.removeItem(key); } return d || defaultValue; }