Skip to content

StorageCache

对浏览器 localStorage 和 sessionStorage 或者 localStorage Like 的统一封装

Demo

普通使用

ts
import { 
StorageCache
,
createStorageCache
} from '@vill-v/broswer'
const
normalStorage
= new
StorageCache
(
localStorage
, 'token')
// or createStorageCache(localStorage, 'token') // 移除
normalStorage
.
remove
()
// 是否存在
normalStorage
.
has
()
// 获取值
normalStorage
.
get
()
// 设置值
normalStorage
.
set
('foo')
// 获取值
normalStorage
.
value
// 设置值
normalStorage
.
value
= 'foo'
// 是否和入参相同
normalStorage
.
eq
('bar')
// 与normalStorage.get()相同
normalStorage
.
rawGet
()
// 与normalStorage.set()相同
normalStorage
.
rawSet
()
// 与 normalStorage.value 相同
normalStorage
.
rawValue
// 与normalStorage.eq('bar')相同
normalStorage
.
rawEq
('bar')

对值进行解析

ts
import { 
StorageCache
,
createStorageCache
} from '@vill-v/broswer'
/** * 自定义值的解析规则 */ const
storage
= new
StorageCache
(
localStorage
, 'userInfo', {
get
: (
value
) =>
JSON
.
parse
(
value
),
set
: (
value
) =>
JSON
.
stringify
(
value
),
}) /** * 第三参数为true时默认使用JSON AP进行解析与序列化 */ const
normalStorage
= new
StorageCache
(
localStorage
, 'userInfo', true)
// or createStorageCache(localStorage, 'userInfo', true) // 移除
normalStorage
.
remove
()
// 是否存在
normalStorage
.
has
()
// 获取值
normalStorage
.
get
()
// 设置值
normalStorage
.
set
('foo')
// 获取值
normalStorage
.
value
// 设置值
normalStorage
.
value
= 'foo'
// 是否和入参相同 // 该方法内部使用为 === 只能匹配基础类型
normalStorage
.
eq
('bar')
// 获取字符串原值
normalStorage
.
rawGet
()
// 直接设置字符串值
normalStorage
.
rawSet
()
// 获取字符串原值
normalStorage
.
rawValue
// 设置字符串原值
normalStorage
.
rawValue
= '{userId:1}'
// 与字符串原值比较是否相同
normalStorage
.
rawEq
('{userId:1}')

DTS

ts
/**
 *  值解析规则
 */
interface StorageCacheStoreParseType<T = any> {
  get: (value: string) => T
  set: (value: T) => string
}

/**
 * Storage缓存商店
 * 提供自动json数据处理功能
 */
declare class StorageCache<T = any> {
  /**
   * 初始化
   * @param storage 定义缓存
   * @param key 定义储存的key
   * @param parse 定义解析规则
   */
  constructor(storage: Storage, key: string, parse?: StorageCacheStoreParseType<T> | true)

  private _changeParse

  /**
   * 获取key值
   * 在缓存统一管理,并对key进行混淆之后它很有用
   */
  get key(): string

  /**
   * 是否存在该缓存
   */
  has(): boolean

  /**
   * 获取原始值
   */
  rawGet(): string | null

  /**
   * 设置原始值
   * @param value
   */
  rawSet(value?: string | null): void

  /**
   * 获取值
   */
  get(): T | null

  /**
   * 设置值
   * @param value
   */
  set(value?: T | null): void

  /**
   * 获取值
   */
  get value(): T | null
  /**
   * 设置值
   * @param value
   */
  set value(value: T | null | undefined)

  /**
   * 获取原始值
   */
  get rawValue(): string | null | undefined

  /**
   * 设置原始值
   * @param value
   */
  set rawValue(value: string | null | undefined)

  /**
   * 移除该缓存
   */
  remove(): void

  /**
   * 原值是否相等
   * @param value
   */
  rawEq(value?: string | null): boolean

  /**
   * 值是否相等
   * 暂时只是用===比较
   * @param value
   */
  eq(value?: string | null): boolean
}

declare const createStorageCache: <T = any>(
  storage: Storage,
  key: string,
  parse?: true | StorageCacheStoreParseType<T> | undefined
) => StorageCache<T>

Released under the MIT License.