当前位置: 首页 > news >正文

localForage使用 IndexedDB / WebSQL存储

一、什么是 localForage

当我们的存储量比较大的时候,我们一定会想到我们的 indexedDB,让我们在浏览器中也可以
使用数据库这种形式来玩转本地化存储,然而 indexedDB 的使用是比较繁琐而复杂的,
有一定的学习成本,但 localForage 的出现几乎抹平了这个缺陷,让我们轻松无负担的在
浏览器中使用 indexedDB。localStorage如果存储内容多的话会消耗内存空间,会导致页面变卡。
那么 IndexedDB 存储量过多的话会导致页面变卡吗?不会有太大影响,因为 IndexedDB 的读取和存储都是异步的,不会阻塞浏览器进程。IndexedDB 的储存空间比LocalStorage 大得多,一般可达到500M,甚至没有上限。而localForage 是基于 indexedDB 封装的库,通过它我们可以简化 IndexedDB 的使用。

若浏览器不支持 IndexedDB 或 WebSQL,则使用 localStorage。在所有主流浏览器中都可用:Chrome,Firefox,IE 和 Safari(包括 Safari Mobile)。

二、localForage 的使用

1,安装和引入

npm install localforage
import localforage from 'localforage'

2、创建一个 indexedDB

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

3、存储

myIndexedDB.setItem(key, value)

4、取值(由于indexedDB的存取都是异步的,建议使用 promise.then() 或 async/await 去读值)

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);
}

 5、删除

myIndexedDB.removeItem('somekey')

6、重置数据库

myIndexedDB.clear()


VUE3 推荐使用 Pinia 管理 localForage

// store/indexedDB.ts
import { defineStore } from 'pinia'
import localforage from 'localforage'export const useIndexedDBStore = defineStore('indexedDB', {state: () => ({filesDB: localforage.createInstance({name: 'filesDB',}),usersDB: localforage.createInstance({name: 'usersDB',}),responseDB: localforage.createInstance({name: 'responseDB',}),}),actions: {async setfilesDB(key: string, value: any) {this.filesDB.setItem(key, value)},}
})

 我们使用的时候,就直接调用 store 中的方法

import { useIndexedDBStore } from '@/store/indexedDB'
const indexedDBStore = useIndexedDBStore()
const file1 = {a: 'hello'}
indexedDBStore.setfilesDB('file1', file1)

 《完》

http://www.lryc.cn/news/251986.html

相关文章:

  • Hdoop学习笔记(HDP)-Part.03 资源规划
  • SQL -高阶3
  • HarmonyOS4.0系列——03、声明式UI、链式编程、事件方法、以及自定义组件简单案例
  • 播放器开发(六):音频帧处理并用SDL播放
  • Qt 问题记录
  • Go 语言真正有什么用处?
  • 贪心 55. 跳跃游戏 45.跳跃游戏 II
  • 为XiunoBBS4.0开启redis缓存且支持密码验证
  • 手把手教你写一个Shell脚本部署你的服务
  • 银行数字化产品方案
  • C# datagridview控件 绑定数据库中表中数据的方式-3
  • Amazon CodeWhisperer 正式发布可免费供个人使用
  • el-table根据返回数据回显选择复选框
  • 代码随想录算法训练营第四十二天 _ 动态规划_01背包问题。
  • 会话 cookie 及隐私的那些事
  • 前端知识笔记(二十九)———MySQL通配符和正则表达式
  • C#网络编程(System.Net.Sockets命名空间)
  • linux 系统重装 ssh 连接失败
  • stream流操作List对象,指定属性,取差集、交集
  • 计算机相关行业在大数据库时代下的潮流和趁势
  • Mac苹果视频剪辑:Final Cut Pro Mac
  • 高德Map
  • SSM新闻发布管理系统
  • 客户销售目标拆解:数据驱动的方法和策略
  • “丝路电商”与泛欧在线公共采购平台Peppol
  • 今日思考 -- 创新领导力(CIO)读后感
  • Python实现Excel自动化
  • WT2605-24SS高品质录音语音芯片:实现五种变音效果,为音频应用增添无限创意
  • 最美早安心语问候朋友们,祝你心情美好,万事如意
  • 2312skia,16画布