import { loadEnv } from '@build/index';
|
|
interface ProxyStorage {
|
getItem(key: string): any;
|
setItem(Key: string, value: string): void;
|
removeItem(key: string): void;
|
clear(): void;
|
}
|
|
const { VITE_PUBLIC_PATH } = loadEnv();
|
|
//sessionStorage operate
|
class sessionStorageProxy implements ProxyStorage {
|
protected storage: ProxyStorage;
|
|
constructor(storageModel: ProxyStorage) {
|
this.storage = storageModel;
|
}
|
|
getKey(key: string): string {
|
return `${VITE_PUBLIC_PATH}_${key}`;
|
}
|
|
// 存
|
public setItem(key: string, value: any): void {
|
this.storage.setItem(this.getKey(key), JSON.stringify(value));
|
}
|
|
// 取
|
public getItem<T = any>(key: string): null | T {
|
return JSON.parse(this.storage.getItem(this.getKey(key)));
|
}
|
|
// 删
|
public removeItem(key: string): void {
|
this.storage.removeItem(this.getKey(key));
|
}
|
|
// 清空
|
public clear(): void {
|
this.storage.clear();
|
}
|
}
|
|
//localStorage operate
|
class localStorageProxy extends sessionStorageProxy implements ProxyStorage {
|
constructor(localStorage: ProxyStorage) {
|
super(localStorage);
|
}
|
}
|
|
export const storageSession = new sessionStorageProxy(sessionStorage);
|
|
export const storageLocal = new localStorageProxy(localStorage);
|