uniApp缓存

uniApp中内置缓存机制

在H5页面,缓存到LocalStorage中,小程序缓存到Storage

封装storage.js

/**
 * 判断字符串是否是json字符串
 * 判断条件 1. 排除null可能性 
           2. 确保数据是对象或数组
 * @param str  数据
 * @returns Boolean
 */
const isJsonString = str => { // 判断字符串是否是json字符串
    try {
        const toObj = JSON.parse(str);
        if (toObj && typeof toObj === 'object') {
            return true
        }
    } catch {}
    return false
}

export default {
    set(name, value) {
        if (value && typeof value == 'object') { //设置json缓存数据
            uni.setStorageSync(name, JSON.stringify(value));
        } else { //设置缓存数据
            uni.setStorageSync(name, value);
        }
    },
    get(name) { //获取缓存数据
        var data = uni.getStorageSync(name);
        if (data) {
            if (isJsonString(data)) { //json字符串转对象
                return JSON.parse(data);
            }
            return data;
        }
        return null;
    },
    remove(name) { // 清除某项缓存
        uni.removeStorageSync(name);
    },
    clear() { // 清空缓存
        uni.clearStorageSync();
    }
}

引入模块 main.js

import storage from '@/static/js/storage.js';
Vue.prototype.storage=storage;  

在页面使用

this.storage.set('name','12312312');  // 缓存字符串
var obj = {name:'asd',type:'1'}
this.storage.set('nameobj',obj) //缓存对象

console.log(this.storage.get('name'))   //12312312
console.log(this.storage.get('nameobj'))  //{name:'asd',type:'1'}

this.storage.remove('name') //清除缓存name
this.storage.clear()  //清除所有缓存

 

posted @ 2022-09-06 17:07  时光独醒  阅读(1652)  评论(0编辑  收藏  举报