封裝window.sessionStorage,window.localStorage,並且可以設置過期時間
封裝window.sessionStorage
export const session = {
set(key, val) {
if (typeof val !== 'string') {
val = JSON.stringify(val);
}
window.sessionStorage.setItem(key, val);
},
get(key) {
let val = window.sessionStorage.getItem(key);
try {
val = JSON.parse(val);
} catch (e) {
console.log(`${val} Unexpected token H in JSON at position 0`);
}
return val;
},
clear() {
window.sessionStorage.clear();
},
remove(key) {
if (window.sessionStorage.getItem(key)) {
window.sessionStorage.removeItem(key);
}
}
};
封裝window.localStorage,並且可以設置過期時間
export const storage = {
/*
* set 存儲方法
* @ param {String} key 鍵
* @ param {String} value 值,
* @ param {String} expired 過期時間,以分鐘爲單位,非必須
*/
set(key, val, expired) {
if (typeof val !== 'string') {
val = JSON.stringify(val);
}
window.localStorage.setItem(key, val);
if (expired) {
window.localStorage.setItem(`${key}__expires__`, `${Date.now() + 1000 * 60 * expired}`);
}
},
/*
* get 獲取方法
* @ param {String} key 鍵
* @ param {String} expired 存儲時爲非必須字段,所以有可能取不到,默認爲 Date.now+1
*/
get(key) {
const expired = window.localStorage.getItem(`${key}__expires__`) || Date.now + 1;
const now = Date.now();
if (now >= expired) {
window.localStorage.removeItem(key);
return;
}
let val = window.localStorage.getItem(key);
try {
val = JSON.parse(val);
} catch (e) {
console.log(`${val} Unexpected token H in JSON at position 0`);
}
return val;
},
clear() {
window.localStorage.clear();
},
/*
* remove 移除
* */
remove(key) {
if (window.localStorage.getItem(`${key}__expires__`)) {
window.localStorage.removeItem(`${key}__expires__`);
}
if (window.localStorage.getItem(key)) {
window.localStorage.removeItem(key);
}
}
};
過期時間參考