localForage封装代码

本文介绍了localForage库如何封装和简化IndexedDB的使用,提供异步存储、对象支持以及浏览器兼容性处理。作者展示了如何创建、存取、删除和重置数据的基本操作。
摘要由CSDN通过智能技术生成

localForage封装

indexedDB

当前端本地存储量比较大的时候会想到 indexedDB,indexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象)。
优点:

  • 存取方便:使用 webStorage 存储对象或数组的时候,还需要先经过先序列化为字符串,取值的时候需要经过反序列化,那 indexedDB 就比较完美的解决了这个问题,可以轻松存取对象或数组等结构化克隆算法支持的任何对象。
  • 异步存取:indexedDB 的读取和存储都是异步的,不会阻塞浏览器进程。
  • 庞大的存储量:一般可达到500M,甚至没有上限。

localForage

localForage 是基于 indexedDB 封装的库,通过它我们可以简化 indexedDB 的使用。
对于浏览器的兼容问题,它有一个优雅降级策略,若浏览器不支持 indexedDB 则使用 WebSQL ,如果不支持 WebSQL 则使用 localStorage。

localForage 的使用

import localforage from 'localforage'

// 创建
const myIndexedDB = localforage.createInstance({
  name: 'myIndexedDB',
})

// 存
myIndexedDB.setItem(key, value)

// 取
myIndexedDB.getItem('somekey').then(function (value) {
  // we got our value
}).catch(function (err) {
  // we got an error
});
try {
  const value = await myIndexedDB.getItem('somekey');
  // This code runs once the value has been loaded
  // from the offline store.
  console.log(value);
} catch (err) {
  // This code runs if there were any errors.
  console.log(err);
}

// 删除
myIndexedDB.removeItem('somekey')

// 重置
myIndexedDB.clear()

localForage 的封装

import localForage from 'localforage';

export class Storage {
  private db: LocalForage;

  constructor(storeName = 'xxx') {
    this.db = localForage.createInstance({
      name: ProductCodeEnum.XXX,
      storeName,
      description: 'storage for xxx',
    });
  }

  private getKey(key: string): string {
    return [key, projectCode, userEmail].join('-'); 
  }

  getStorage() {
    return this.db;
  }

  getItem(key: string) {
    return this.getStorage().getItem(this.getKey(key));
  }

  setItem(key: string, value: unknown) {
    return this.getStorage().setItem(this.getKey(key), value);
  }

  removeItem(key: string) {
    return this.getStorage().removeItem(this.getKey(key));
  }
}

export const xxxStorage = new Storage('xxx');
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值