vue项目中对storage进行封装
我们知道Storage本身有API,非常简单的key/val形式的,那么我们为什么还要去封装呢?为什么呢???
- – 就是因为简单,所以无法满足项目需求
- – Storage只存储字符串,需要人工转换成json对象
- – Storage只能一次性清空,不能单个清空
上代码…
import config from './../config' export default { // 获取storage存储对象 getStorage(){ // 字符串转化为对象 return JSON.parse(window.localStorage.getItem(config.namespace) || "{}") }, setItem(key, val) { // step1 首先获取storage信息 let storage = this.getStorage() // step2 添加新的缓存对象 storage[key] = val // step3 反序列化转换成字符串存入缓存中 window.localStorage.setItem(config.namespace, JSON.stringify(storage) }, getItem(key) { return this.getStorage()[key] }, clearItem(key) { let storage = this.getStorage() delete storage[key] window.localStorage.setItem(config.namespace, JSON.stringify(storage)) }, clearAll() { window.localStorage.clear() } }
全局挂载
想要全局调用就在main.js里面挂载一个全局的方法
import storage from './utils/storage.js' const app = createApp(App) app.config.globalProperties.$storage = storage
Vue页面调用
mounted(){ this.$storage.setItem('name', 'LiMing') this.$storage.setItem('userinfo', {"A": "a", "B": "b"}) console.log('name---', this.$storage.getItem("name")) this.$storage.clearItem("name") this.$storage.clearAll() }
以上代码就可以实现复杂的缓存了