1,设置 cookie
export function set(key: string, value: string, validity = 365) {
const times = validity;
const cur = new Date();
cur.setTime(cur.getTime() + times * 24 * 3600 * 1000);
document.cookie = `${key}=${encodeURIComponent(value)};expires=${
times === undefined ? '' : cur.toUTCString()
}`;
}
export const setStorage = (key,value,expire=0) => {
if (value === '' || value === null || value === undefined) {
value = null;
}
if (isNaN(expire) || expire < 1) throw new Error("Expire must be a number");
expire = (expire?expire:config.expire) * 60000;
let data = {
value: value,
time: Date.now(),
expire: expire
}
window[config.type].setItem(key, JSON.stringify(data));
}
2,根据 key 值获取 cookie
export function get(key: string) {
const data = document.cookie;
let startIndex = data.indexOf(key + '=');
if (startIndex > -1) {
startIndex = startIndex + key.length + 1;
let endIndex = data.indexOf(';', startIndex);
endIndex = endIndex < 0 ? data.length : endIndex;
return decodeURIComponent(data.substring(startIndex, endIndex));
}
return '';
}
export const getStorage = (key) => {
if (!window[config.type].getItem(key) || JSON.stringify(window[config.type].getItem(key)) === 'null'){
return null;
}
const storage = JSON.parse(window[config.type].getItem(key));
console.log(storage)
let nowTime = Date.now();
console.log(config.expire*6000 ,(nowTime - storage.time))
if (storage.expire && config.expire*6000 < (nowTime - storage.time)) {
removeStorage(key);
return null;
} else {
setStorage(key,storage.value);
return storage.value;
}
}
3,获取所有值
export const getAllStorage = () => {
let len = window[config.type].length
let arr = new Array()
for (let i = 0; i < len; i++) {
let getKey = window[config.type].key(i)
let getVal = window[config.type].getItem(getKey)
arr[i] = { 'key': getKey, 'val': getVal, }
}
return arr
}
4,删除 cookie
export function remove(key: string) {
const data = get(key);
if (data) {
set(key, data, -1);
}
}
const autoAddPrefix = (key) => {
const prefix = config.prefix ? config.prefix + '_' : '';
return prefix + key;
}
export const removeStorage = (key) => {
window[config.type].removeItem(autoAddPrefix(key));
}
5,清空全部
export const clearStorage = () => {
window[config.type].clear();
}
1、存储 loalStorage
export const loalStorageSet = (key, value) => {
if (!key) return
if (typeof value !== 'string') {
value = JSON.stringify(value)
}
window.localStorage.setItem(key, value)
}
2、获取 localStorage
export const loalStorageGet = (key) => {
if (!key) return;
return window.localStorage.getItem(key);
};
3、删除 localStorage
export const loalStorageRemove = (key) => {
if (!key) return
window.localStorage.removeItem(key)
}
4、存储 sessionStorage
export const sessionStorageSet = (key, value) => {
if (!key) return
if (typeof value !== 'string') {
value = JSON.stringify(value)
}
window.sessionStorage.setItem(key, value)
}
5、获取 sessionStorage
export const sessionStorageGet = (key) => {
if (!key) return;
return window.sessionStorage.getItem(key);
};
6、删除 sessionStorage
export const sessionStorageRemove = (key) => {
if (!key) return
window.sessionStorage.removeItem(key)
}