一个简单好用的storage方法库
- API简洁,功能齐全【has、get、set、delete、clear、isEmpty】
- 条件查询【SS.get((key, value)=> value > 700)】
- 数据超时过期【SS.set({c: 789}, 60*24)】
- 数据隔离,互不干扰【见下“基本使用”】
- 基本的数据混淆,不明文存储
- Typescript
storage-awesome 的核心是工厂方法storageFactory,该方法接受两个入参,第一入参是Storage对象,如window.localStorage;第二入参是用来标识各实例唯一性的name,不同name的storage实例数据互相隔离。
工厂方法输出storage实例对象。实例对象有has、get、set、delete、clear、isEmpty几个方法,其中set、delete、clear支持链式操作。这些方法可以根据使用场景接收不同格式入参。
基于工厂方法,storage-awesome 预设了SessionStorage和LocalStorage两个实例对象,可以直接使用。SS和LS是它们的简写。
/* 基本使用 */
import storageFactory, {SessionStorage, LocalStorage, SS, LS} from 'storage-awesome';
let SessionA = storageFactory(window.sessionStorage, 'SessionA');
let SessionB = storageFactory(window.sessionStorage, 'SessionB');
SessionA.set({
test: '123'
})
SessionB.set({
test: '456'
})
//// SessionA 和 SessionB 相互隔离
SessionA.get('test') //'123'
SessionB.get('test') //'456'
LocalStorage
.clear()
.set({
a: 1,
b: 2
})
.set({
c: 3,
d: 4
}, 10)
.delete(['a', 'c'])
.get();
//结果: {b: 2, d: 4}
安装
npm install storage-awesome --save
使用
ES module:
import storageFactory, {SessionStorage, LocalStorage, SS, LS} from 'storage-awesome';
SS.set({abc: 123});
SS.has('abc');
//true
CommonJS:
const {storageFactory, SessionStorage, LocalStorage, SS, LS} = require('storage-awesome');
SS.set({abc: 123});
SS.delete('abc')
SS.has('abc');
//false
用 script 标签 引入:
<script src='https://unpkg.com/storage-awesome@1.1.2/dist/storage-awesome.min.js'></script>
const {storageFactory, SessionStorage, LocalStorage, SS, LS} = storage;
LS.clear();
storageFactory:
入参(按顺序) | 类型 | 是否必填 | 默认值 |
---|---|---|---|
Storage对象,可以是window.sessionStorage或者window.localStorage,或者其它实现了getItem和setItem方法的对象 | Storage | 是 | window.sessionStorage |
全局唯一name | string | 是 | "storageAwesome" |
实例方法:
方法 | 简介 | 入参 | 入参类型 | 返回值 |
---|---|---|---|---|
has | 查询某key在该storage是否有值 | key名 | string | boolean |
示例:SS.has('a') // 返回:true | ||||
查询多个key在该storage是否有值,全部为true时才返回true | 存放key名的数组 | string[] | boolean | |
示例:SS.has(['a', 'no']) // 返回:false | ||||
get | 获取某key在该storage的值 | key名 | string | any,该key对应的值 |
示例:SS.get('a') // 返回:123 | ||||
获取多个key在该storage的值,以键值对的形式返回 | 存放key名的数组 | string[] | json对象 | |
示例:SS.get(['a', 'b']) // 返回:{a: 123, b: 456} | ||||
获取该storage保存的所有值,以键值对的形式返回 | 无 | void | json对象 | |
示例:SS.get() // 返回:{a: 123, b: 456, c: 789} | ||||
获取符合查询条件的值,以键值对的形式返回 | 查询函数 | (key: string, value: any) => boolean | json对象 | |
示例:SS.get((key, value)=> value > 700) // 返回:{c: 789} | ||||
set | 向该storage存入键值对 | 入参1:json对象;入参2:超时时间(分钟),非必填 | obj: { [key: string]: any }, minute?: number | 返回该storage对象 |
示例:SS.set({a: 123, b: 456}, 60 * 24).set({c: 789}) // 返回:SS | ||||
delete | 删除该storage中的某键值对 | key名 | string | 返回该storage对象 |
示例:SS.delete('a').delete('b') // 返回:SS | ||||
删除该storage中的多个键值对 | 存放key名的数组 | string[] | 返回该storage对象 | |
示例:SS.delete(['a', 'b']) // 返回:SS | ||||
clear | 清空该storage的存储 | 无 | void | 返回该storage对象 |
示例:SS.clear() // 返回:SS | ||||
isEmpty | 判断该storage是否无数据 | 无 | void | boolean |
示例:SS.isEmpty() // 返回:false |
min:4.8KB
gzip:1.83KB
- 优化除虫
- 完善测试
- 完善数据混淆
- 20210918(version 1.0.1):
- 实例方法新增isEmpty,用以判断该storage是否无数据。
- 20220908(version 1.1.1):
- 加入简单的数据混淆
- 工厂函数入参改为必填
- 修复数据超时后isEmpty不准确的问题
- 优化重复set入同一个字段数据时的超时逻辑(重复set入的时候,如果之前的数据未超时且没有重新输入超时时间,则默认按原设定的超时时间;如想取消之前设定的超时时间,可传入超时时间为0)
- 优化readme和package.json
- 20220915(version 1.1.2):
- 把本组件的本地开发环境所需的node版本信息移出package.json