1.0.0 • Published 10 months ago
storage-package v1.0.0
Localstore模块化管理器
一、功能介绍
日常开发中,我们本地中的localstore非常难以管理,维护,很多时候不知道项目中存储了哪些内容。或者是说命名规范、多项目协同命名空间问题,因此,此库主要解决了如下几点:
- 模块化管理方式,根据业务来进行建立模块,如果为微前端应用则可以根据应用来建模块;
- 命名空间,每个模块有独立的命名空间,不存在命名冲突问题;
- 配置中需要配置模块下所使用的键,也就是defineProps,目的是为了更直观的看当前模块使用了哪些字段的缓存;
- store中key风格统一,不管是你传递了大驼峰、小驼峰、烤串,都会统一转换成下划线,同时拼接命名空间,也就是如:"user_xxxx_xxx";
二、如何使用
1、安装依赖
// npm
npm install storage-h -S;
// yarn
yarn add storeage-h -S
2、在项目中新建一个管理/定义store中文件;
// use-storage.ts
import { createStorage } from "storage-h"; // 引入存储库
// 创建一个系统store
const systemStore = createStorage({
// store唯一id
id: "system",
// localstore存储前缀
prefix: "system",
// 所使用的字段,如果不传递则不限制
defineProps: ["userName", "userId", "nickName", "token"]
});
// 菜单store
const menuStore = createStorage({
// store唯一id
id: "menu",
// localstore存储前缀
prefix: "menu",
// 所使用的字段,如果不传递则不限制
defineProps: ["menuList"]
});
// 建议按需导出,不使用默认更方便管理
export { systemStore, menuStore };
3、业务中使用
import { systemStore, menuStore } from "./lib/use-storage.ts";
/**
* 每个模块的常用方法
* 取值
* get(key) 获取单个值
* get(key1, key2, ...key) 获取多个值,返回一个object
* getOnce(key) 获取值,获取了后会自动删除
*
* 设置值
* set(key, value) 设置单个值
* set({key: value}) 设置多个值
* set(key, value, time) 设置超时时间
*
* 删除值
* delete(key) 单个删除
* delete(key1, key2, ...key) 多个删除
*
* 设置过期时间
* setExpire(key, expire) 设置过期时间
* getKeys() 获取当前存储中的所有键, 并非定义数量
* getSize() 获取当前模块中存储的数量,并非定义数量
*/
// 设置用户名
systemStore.set("userName", "John");
// 设置其他未定义的
systemStore.set("userSex", "John"); // 直接会错误警告
// 批量设置
systemStore.set({
userName: "zhangsan",
nickName: "就是张三",
userId: "123456"
});
// 批量删除
systemStore.delete("userName", "nickName", "userId");
三、API 说明
方法 | 参数 | 参数说明 |
---|---|---|
get | get(...keys: string[]): Object | any 单个返回值,多个则返回对象 | |
set | set( key: string | object, value?: any, expireTime?: number,): { key: string: IContent } | |
delete | delete(...keys: string[]): Storage | |
setExpire | setExpire(key: string, expireTime?: number): object | number | null | |
getKeys | getKeys(): string[] | |
getSize | getSize(): number |
1.0.0
10 months ago