/** * vk依赖扩展 - localStorage 本地缓存 * pub - 公共的可随时删除的缓存 * kh - 跟登录账号有关联的缓存 * sys - 系统级缓存 - 一般不删除 * * 储存缓存 * vk.setStorageSync(key,data); * 获取缓存 * vk.getStorageSync(key); */ var localStorage = {}; /** * 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。 * @param {String} key 本地缓存中的指定的 key * @param {Any} data 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 */ localStorage.setStorageSync = function(key,data){ uni.setStorageSync(key, data); watchLocalStorage({ type:"set", key, data }); }; /** * 从本地缓存中异步获取指定 key 对应的内容。 * @param {String} key 本地缓存中的指定的 key */ localStorage.getStorageSync = function(key){ let data = uni.getStorageSync(key); // get 没有必要监听 // watchLocalStorage({ type:"get", key, data }); return data; }; /** * 同步获取当前 storage 的相关信息。 */ localStorage.getStorageInfoSync = function(){ let info = uni.getStorageInfoSync(); let sizeInfo = calcSize(Number(info.currentSize), 1024, 3,["KB","MB","GB"]); info.sizeInfo = sizeInfo; return info; }; /** * 从本地缓存中同步移除指定 key。 * @param {String} key 本地缓存中的指定的 key */ localStorage.removeStorageSync = function(key){ uni.removeStorageSync(key); watchLocalStorage({ type:"remove", key }); }; /** * 从本地缓存中异步移除指定 key。 */ localStorage.removeStorage = function(obj){ uni.removeStorage({ key:obj.key, success:function(res){ watchLocalStorage({ type:"remove", key:obj.key }); if(obj.success) obj.success(res); }, fail:obj.fail, complete:obj.complete }); }; /** * 同步清理本地数据缓存。若key有值,则清除键值为指定字符串开头的缓存 * @param {String} key 本地缓存中的指定的 key * vk.clearStorageSync(); */ localStorage.clearStorageSync = function(key){ if(key){ let { keys } = uni.getStorageInfoSync(); if(keys){ keys.map((keyName) => { if(keyName.indexOf(key) == 0){ localStorage.removeStorage({ key: keyName }); } }); } }else{ watchLocalStorage({ type:"clear" }); uni.clearStorage(); } }; export default localStorage; /** * 单位进制换算 * length 换算前大小 * ary 进制,如KB-MB-GB,进制1024 * precision 数值精度 * arr 进制的数组,如["B","KB","MB","GB"] * calcSize(length,1024,3,["B","KB","MB","GB"]); */ function calcSize (length=0,ary,precision,arr){ var size = parseFloat(length); var mySize = 0; var type = ""; if(size