/** * 缓存数据优化 * const storage = require('@/utils/storage'); * import storage from '@/utils/storage' * 使用方法 【 * 一、设置缓存 * string storage.setKey('k', 'string你好啊'); * json storage.setKey('k', { "b": "3" }, 2); * array storage.setKey('k', [1, 2, 3]); * boolean storage.setKey('k', true); * 二、读取缓存 * 默认值 storage.getKey('k') * string storage.getKey('k', '你好') * json storage.getKey('k', { "a": "1" }) * 三、移除/清理 * 移除: storage.remove('k'); * 清理:storage.clear(); * 】 * @type {String} */ import {inArray} from "@/utils/util"; const postfix = '_expiry' // 缓存有效期后缀 /** * @param {function} */ class Storage { /** * 设置缓存 * @param {string} k [键名] * @param {*} v [键值] * @param {string|number|null} t [时间、单位秒] */ static setKey(k, v, t = null) { uni.setStorageSync(k, v) const seconds = parseInt(t) if (seconds > 0) { let timestamp = Date.parse(new Date()) timestamp = timestamp / 1000 + seconds uni.setStorageSync(k + postfix, timestamp + '') } else { uni.removeStorageSync(k + postfix) } } /** * 获取缓存 * @param {string} k [键名] * @param {*} def [获取为空时默认] */ static getKey(k, def = false) { const deadTime = parseInt(uni.getStorageSync(k + postfix)) if (deadTime) { if (parseInt(deadTime) < Date.parse(new Date()) / 1000) { if (def) { return def } else { return false } } } const res = uni.getStorageSync(k) if (res) { return res } if (def == undefined || def == "") { def = false } return def } /** * 删除指定缓存 * @param {Object} k */ static remove(k) { uni.removeStorageSync(k) uni.removeStorageSync(k + postfix) } /** * 清理所有缓存 * @return {[type]} [description] */ static clear() { uni.clearStorageSync() } static clearOtherKey(key = []) { const res = uni.getStorageInfoSync(); res.keys.forEach((it) => { if (!inArray(it, key)) { this.remove(it) } }) } } export default Storage