@shencom/utils-storage
Version:
274 lines (217 loc) • 5.73 kB
Markdown
# @shencom/utils-storage
> Storage 工具,兼容小程序,Uniapp,Browser
## Install
```sh
pnpm add @shencom/utils
# or
pnpm add @shencom/utils-storage
```
## Basic Usage
```ts
const storage = new ScStorageBase(StorageOption);
```
## Option
```ts
interface StorageOption {
scid: string;
get: (key: string) => string | null;
set: (key: string, value: string) => void;
remove: (key: string) => void;
clear: () => void;
keys: () => string[];
}
```
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
| ------ | ---------------------- | -------- | ------ | ------ |
| scid | 唯一标识符 | String | - | - |
| get | 获取本地存储数据 | Function | - | - |
| set | 设置本地存储数据 | Function | - | - |
| remove | 移除指定本地存储数据 | Function | - | - |
| clear | 清空本地存储数据 | Function | - | - |
| keys | 获取本地存储所有的 key | Function | - | - |
## Methods
**get**
- 说明: 获取本地存储数据
- 类型: `get<T = any>(key: string): T | null`
- 示例:
```ts
const data = storage.get(key);
```
**set**
- 说明: 设置本地存储数据
- 类型: `set(key: string, data: any, time?: number): void`
- 参数:
- `key`: 存储的 key
- `data`: 存储的值
- `time`: 存储时间(单位为分钟),默认: `永久`
- 示例:
```ts
storage.set(key, data, 10); // 10分钟
storage.set(key, data); // 永久
```
**remove**
- 说明: 移除指定本地存储数据
- 类型: `remove(key: string): void`
- 参数:
- `key`: 存储的 key
- 示例:
```ts
storage.remove(key);
```
**clear**
- 说明: 清空本地存储数据,默认保留 lasting 前缀字段数据
- 类型: `clear(isAll?: boolean): void`
- 参数:
- `isAll`: 是否全部清除,默认: `false`
- 示例:
```ts
storage.clear(); // 保留 lasting 前缀字段数据
storage.clear(true); // 全部清除
```
**keys**
- 说明: 获取本地存储所有的 key
- 类型: `keys(): string[]`
- 示例:
```ts
const keys = storage.keys();
```
**getUser**
- 说明: 获取 `user_` 开头的数据
- 类型: `getUser<T = any>(key: string): T | null`
- 参数:
- `key`: 存储的 key
- 示例:
```ts
const data = storage.getUser(key);
```
**setUser**
- 说明: 设置 `user_` 开头的数据
- 类型: `setUser(key: string, data: any, time?: number): void`
- 参数:
- `key`: 存储的 key
- `data`: 存储的值
- `time`: 存储时间(单位为分钟),默认: `永久`
- 示例:
```ts
storage.setUser(key, data, 10); // 10分钟
storage.setUser(key, data); // 永久
```
**removeUser**
- 说明: 移除以 `user_` 开头的数据
- 类型: `removeUser(key: string): void`
- 参数:
- `key`: 存储的 key
- 示例:
```ts
storage.removeUser(key);
```
**clearUser**
- 说明: 清除所有以 `user_` 开头的数据
- 类型: `clearUser(): void`
- 示例:
```ts
storage.clearUser();
```
**getData**
- 说明: 获取 `data_` 开头的数据
- 类型: `getData<T = any>(key: string): T | null`
- 参数:
- `key`: 存储的 key
- 示例:
```ts
const data = storage.getData(key);
```
**setData**
- 说明: 设置 `data_` 开头的数据
- 类型: `setData(key: string, data: any, time?: number): void`
- 参数:
- `key`: 存储的 key
- `data`: 存储的值
- `time`: 存储时间(单位为分钟),默认: `永久`
- 示例:
```ts
storage.setData(key, data, 10); // 10分钟
storage.setData(key, data); // 永久
```
**removeData**
- 说明: 移除以 `data_` 开头的数据
- 类型: `removeData(key: string): void`
- 参数:
- `key`: 存储的 key
- 示例:
```ts
storage.removeData(key);
```
**clearData**
- 说明: 清除所有以 `data_` 开头的数据
- 类型: `clearData(): void`
- 示例:
```ts
storage.clearData();
```
**getLasting**
- 说明: 获取 `lasting_` 开头的数据
- 类型: `getLasting<T = any>(key: string): T | null`
- 参数:
- `key`: 存储的 key
- 示例:
```ts
const data = storage.getLasting(key);
```
**setLasting**
- 说明: 设置 `lasting_` 开头的数据,永久存储,使用 `clear` 方法默认是不清空这个数据
- 类型: `setLasting(key: string, data: any): void`
- 参数:
- `key`: 存储的 key
- `data`: 存储的值
- 示例:
```ts
storage.setLasting(key, data);
```
**removeLasting**
- 说明: 移除以 `lasting_` 开头的数据
- 类型: `removeLasting(key: string): void`
- 参数:
- `key`: 存储的 key
- 示例:
```ts
storage.removeLasting(key);
```
**clearLasting**
- 说明: 清除所有以 `lasting_` 开头的数据
- 类型: `clearLasting(): void`
- 示例:
```ts
storage.clearLasting();
```
## Example
### Browser
```ts
import { ScStorageBase } from '@shencom/utils';
// import ScStorageBase from '@shencom/utils-storage';
const scid = 'xxx';
const Storages = new ScStorageBase({
scid,
get: window.localStorage.getItem.bind(window.localStorage),
set: window.localStorage.setItem.bind(window.localStorage),
remove: window.localStorage.removeItem.bind(window.localStorage),
clear: window.localStorage.clear.bind(window.localStorage),
keys: () => Object.keys(window.localStorage),
});
export default Storages;
```
### UniApp
```ts
import { ScStorageBase } from '@shencom/utils';
// import ScStorageBase from '@shencom/utils-storage';
const scid = 'xxx';
const Storages = new ScStorageBase({
scid,
get: uni.getStorageSync,
set: uni.setStorageSync,
clear: uni.clearStorageSync,
remove: uni.removeStorageSync,
keys: () => uni.getStorageInfoSync().keys,
});
export default Storages;
```