Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

sp0re/storage-awesome

Repository files navigation

storage-awesome

一个简单好用的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();

API:

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

当前版本包大小(取自webpack打包数据):

min:4.8KB
gzip:1.83KB

TODO:

  • 优化除虫
  • 完善测试
  • 完善数据混淆

更新日志:

  • 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

About

一个简单好用的浏览器端storage方法库

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /