fix: 处理window不可用时降级使用Memory
parent
75ed17a1f9
commit
1f584ff0c9
|
|
@ -5,6 +5,7 @@ import type {
|
||||||
} from './types';
|
} from './types';
|
||||||
|
|
||||||
import {LocalStorageDriver} from './local-storage-driver';
|
import {LocalStorageDriver} from './local-storage-driver';
|
||||||
|
import {MemoryStorageDriver} from './memory-storage-driver';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 存储管理器(策略模式)
|
* 存储管理器(策略模式)
|
||||||
|
|
@ -17,7 +18,7 @@ class StorageManager {
|
||||||
private prefix: string;
|
private prefix: string;
|
||||||
|
|
||||||
constructor({driver, prefix = ''}: StorageManagerOptions = {}) {
|
constructor({driver, prefix = ''}: StorageManagerOptions = {}) {
|
||||||
this.driver = driver || new LocalStorageDriver();
|
this.driver = driver || this.createDefaultDriver();
|
||||||
this.prefix = prefix;
|
this.prefix = prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,6 +106,18 @@ class StorageManager {
|
||||||
await this.driver.setItem(fullKey, item);
|
await this.driver.setItem(fullKey, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据运行环境创建默认驱动:
|
||||||
|
* - 浏览器环境(window.localStorage 可用)→ LocalStorageDriver
|
||||||
|
* - SSR / Node 环境 → MemoryStorageDriver
|
||||||
|
*/
|
||||||
|
private createDefaultDriver(): IStorageDriver {
|
||||||
|
if (typeof window !== 'undefined' && window.localStorage) {
|
||||||
|
return new LocalStorageDriver();
|
||||||
|
}
|
||||||
|
return new MemoryStorageDriver();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取完整的存储键(带前缀)
|
* 获取完整的存储键(带前缀)
|
||||||
* @param key 原始键
|
* @param key 原始键
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue