UNPKG

cache2

Version:

一个简单的 JavaScript 缓存管理,支持浏览器端和 node 端。

113 lines (112 loc) 3.98 kB
import { JSON_Parse_reviver, JSON_Stringify_replacer, TStorage } from './interface'; export type StorageOptions = { needParsed: boolean; replacer: JSON_Stringify_replacer; reviver: JSON_Parse_reviver; memoryScope?: string; prefix?: string; }; /** * 数据存储管理。 * * @class * @param {Object} [storage] 自定义缓存对象要包含 `getItem` `setItem` `removeItem` 方法。默认使用内存缓存。 * @param {Object} [options] 配置项。可选。 * @param {boolean} [options.needParsed] 存取数据时是否需要序列化和解析数据。如果使用内置的内存缓存,默认 `false`,如果自定义 `storage` 默认 `true`。 * @param {Function} [options.replacer] 数据存储时序列化的参数,透传给 [JSON.stringify](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) 的 `replacer` 参数。仅在 `needParsed=true` 时生效。 * @param {Function} [options.reviver] 数据获取时转换的参数,透传给 [JSON.parse](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) 的 `reviver` 参数。仅在 `needParsed=true` 时生效。 * @param {string} [options.prefix] 缓存键前缀。便于管理同域名下的不同项目缓存。 * @example * // 使用内存缓存 * const memory = new Storage(); * memory.set('foo', { baz: 42 }); * memory.get('foo'); * // { baz: 42 } * * // 自定义缓存 sessionStorage 。 * const session = new Storage(window.sessionStorage); * session.set('foo', { a: 1, b: ['bar'], c: ['x', 2, 3] }); * session.get('foo'); * // { a: 1, b: ['bar'], c: ['x', 2, 3] } * * session.del('foo'); // 删除缓存 * session.get('foo'); * // null * * // 使用缓存键前缀。 * // 如果要使用内存缓存, storage 传 `undefined`。 * const local = new Storage(window.localStorage, { prefix: 'project_name' }); * local.set('foo', { baz: 42 }); * local.get('foo'); * // { baz: 42 } */ export declare class Storage<ValueType = any> { private storage; private options; constructor(storage?: TStorage, options?: Partial<StorageOptions>); /** * 内部用于获取存储的键名称。 * * 如果实例有设置 `prefix`,返回 `prefix + key`。 * * @protected * @param key 原键名称 * @returns 存储的键名称 */ protected getKey(key: string): string; /** * 获取存储的数据。 * * @param {string} key 键名称。 * @returns 如果键值存在返回键值,否则返回 `null`。 * @example * const local = new Storage(window.localStorage); * local.set('foo', { baz: 42 }); * local.get('foo'); * // { baz: 42 } */ get<T extends ValueType = ValueType>(key: string): T | null; /** * 存储数据。 * * @param key 键名称。 * @param value 键值。 * @example * const local = new Storage(window.localStorage); * local.set('foo', { baz: 42 }); * local.get('foo'); * // { baz: 42 } */ set<T extends ValueType = ValueType>(key: string, value: T): void; /** * 删除存储的数据。 * * @param key 键名称。 * @example * const local = new Storage(window.localStorage); * local.set('foo', { baz: 42 }); * local.get('foo'); * // { baz: 42 } * * local.del('foo'); * local.get('foo'); * // null */ del(key: string): void; /** * 清除存储的所有键。 * * 注意:该方法调用 `storage.clear()`,可能会将同域下的不同实例的所有键都清除。如果要避免这种情况,建议使用 `import { Cache } 'cache2'`。 * * @example * const local = new Storage(window.localStorage); * local.set('foo', { baz: 42 }); * local.get('foo'); * // { baz: 42 } * * local.clear(); * local.get('foo'); * // null */ clear(): void; }