封装Storage的原因
Storage本身具有API,但是只是简单的key/value形式
Storage只存储字符串,需要转换成json对象
Storage只能一次性删除,不能单个清空
/**
* Storage封装
*/
const STORAGE_KEY='mywen';
export default{
//存储值
setItem(key,value,module_name){
if(module_name){
let val=this.getItem(module_name);
val[key]=value;
this.setItem(module_name,val)
}else{
let val =this.getStorage();
val[key]=value;
window.sessionStorage.setItem(STORAGE_KEY,JSON.stringify(val));
}
},
//获取某一个模块下面的属性 如user模块下面的userName的值
getItem(key,module_name){
if(module_name){
let val=this.getItem(module_name);
if(val) return val[key]
}
return this.getStorage()[key];
},
getStorage(){
return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY)||'{}')
},
//清空某个属性
clear(key,module_name){
let val=this.getStorage();
if(module_name){
delete val[module_name][key];
}else{
delete val[key];
}
window.sessionStorage.setItem(STORAGE_KEY,JSON.stringify(val));
}
}
这样封装的好处,即可以把内容储存在一个key下面
在一个key值中还可以存放多个模块,如user模块,order模块等
以下是对storage的实际操作
首先需要导入封装的storage的文件,再进行操作
import storage from './storage'
获取值
mounted() {
console.log(storage.getItem('username', 'user'));
}
这里就取到了user模块下面的username属性的值
存储值
storage.setItem('oder', '1');
storage.setItem('hobby', 'read book', 'user' );
清空值
storage.clear('oder');