123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- * 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<ary || arr.length<=1){
- type = arr[0];
- mySize = parseFloat(size.toFixed(precision));
- }else{
- for (var i = 1; i < arr.length; i++) {
- var g = arr[i];
- size = size/ary;
- if(size <ary){
- type = g;
- mySize = parseFloat(size.toFixed(precision));
- break;
- }
- }
- }
- return {
- size : mySize,
- type : type,
- title : mySize + " " + type
- }
- };
- function watchLocalStorage(obj){
- if(typeof localStorage.watch === "function"){
- localStorage.watch(obj);
- }
- }
|