前端本地存储方案-localForage-vue3中使用

这篇具有很好参考价值的文章主要介绍了前端本地存储方案-localForage-vue3中使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

前端有多种本地存储方案可供选择,常见的有:

  1. Cookie:小型的文本文件,存储少量数据
  2. Web Storage :包括:localStorage和sessionStorage,存储数据有上限(5M)左右
  3. IndexedDB:一种高级的客户端存储API,存储量大、高版本浏览器兼容性较好

这些本地存储方案各有优缺点,近期发现一种前端本地存储的库 localForage,遵循“渐进增强”或“优雅降级”的原则,集合以上多种方式,使用异步API封装了Web Storage、IndexedDB和WebSQL的库,提供了简单易用的方法来存储和检索数据,API 相对简单,易于上手,下面开始正式介绍localForage用法。

localForage

localForage 是一个快速而简单的 JavaScript 存储库。通过使用异步存储(IndexedDB 或 WebSQL)和简单的类 localStorage 的 API ,localForage 能改善 Web 应用的离线体验。

在不支持 IndexedDB 或 WebSQL 的浏览器中,localForage 使用 localStorage。

github地址: https://github.com/localForage/localForage
API文档:https://localforage.github.io/localForage/#data-api-setitem

第一种使用方法

  1. 安装引入
// 通过npm安装
npm install --save localforage
// 引入
import localforage from 'localforage'
// 或通过 bower 引入
<script src="localforage.js"></script>
  1. 创建indexedDB
const firstIndexedDB = localforage.createInstance({
  name: 'myFirstIndexedDB',
  // 支持config所有配置
  // storeName: 'keyvaluepairs', // 仅接受字母,数字和下划线
})
  1. 存值
//存储字符串
firstIndexedDB.setItem("data1", "今天是个好日子");
//存储对象
firstIndexedDB.setItem("data2", {a:1,b: 2});
//存储数组对象
firstIndexedDB.setItem("data3", [{a:1,b: 2}, {a:2,b:3}, {a:3,b:4}]);

vue3 localforage,vue3.0,存储,前端
4. 取值 (由于indexedDB的存取都是异步的,建议使用 promise.then() 或 async/await 去读值,如果 key 不存在,getItem() 将返回 null。)

//第一种方法
firstIndexedDB.getItem('data1').then(value=> {
 console.log("数据data1",value);
}).catch(err => {
  console.log('错误信息', err)
});
firstIndexedDB.getItem('data2').then(value=> {
 console.log("数据data2",value);
}).catch(err => {
  console.log('错误信息', err)
});

//第二种方法
try {
  const value = await firstIndexedDB.getItem('data3');
  console.log("数据3",value);
} catch (err) {
    console.log('错误信息', err)
}

vue3 localforage,vue3.0,存储,前端
5. 删除

//输入key值
firstIndexedDB.removeItem('data3');
  1. 重置清空数据库
firstIndexedDB.clear();
  1. 获取数据库存储key的数量
firstIndexedDB.length().then(numberOfKeys=> {
    // 输出数据库的大小
    console.log("数据库长度",numberOfKeys);
}).catch(function(err) {
    console.log("出错",err);
});

vue3 localforage,vue3.0,存储,前端
8. 根据key的索引获取名称

firstIndexedDB.key(2).then(keyName=> {
    // key 名
    console.log("key 名",keyName);
}).catch(function(err) {
    console.log("出错",err);
});

vue3 localforage,vue3.0,存储,前端
9. 获取数据库所有key值

firstIndexedDB.keys().then(function(keys) {
    console.log("所有key集合",keys);
}).catch(function(err) {
    console.log("出错",err);
});

vue3 localforage,vue3.0,存储,前端
10. 迭代循环打印所有key-value值

 firstIndexedDB.iterate(function(value, key, iterationNumber) {
     // 此回调函数将对所有 key/value 键值对运行
     console.log([key, value,iterationNumber]);
 }).then(function() {
     console.log('迭代完成');
 }).catch(function(err) {
     console.log("出错",err);
 });

vue3 localforage,vue3.0,存储,前端
11. 提前退出迭代循环

 firstIndexedDB.iterate(function(value, key, iterationNumber) {
    // 此回调函数将对所有 key/value 键值对运行
      if (iterationNumber < 3) {
          console.log([key, value, iterationNumber]);
      } else {
          return [key, value, iterationNumber];
      }
  }).then(function() {
      console.log('退出迭代');
  }).catch(function(err) {
      console.log("出错",err);
  });
  1. 创建多实例
var secondIndexedDB = localforage.createInstance({
  name: "secondIndexedDB"
});

var thirdIndexedDB = localforage.createInstance({
  name: "thirdIndexedDB"
});
  1. 设置某个数据仓库 key 的值
secondIndexedDB.setItem("key", "value");
thirdIndexedDB.setItem("key", "value2");
  1. 删除数据库 dropInstance

14.1 调用时,若不传参,则删除当前实例的数据仓库

localforage.dropInstance().then(function() {
  console.log('删除当前实例的数据仓库')
});

14.2 调用时,若参数是指定了 name 和 storeName 属性的对象,会删除指定的数据仓库

localforage.dropInstance({
  name: "thirdIndexedDB",
  storeName: "keyvaluepairs"
}).then(function() {
  console.log('删除指定的数据库下的指定数据仓库')
});

14.3 调用时,若参数仅指定了 name 属性的对象,将删除指定的数据库(及其所有数据仓库)

localforage.dropInstance({
  name: "secondIndexedDB"
}).then(function() {
  console.log('删除指定的数据库(及其所有数据仓库)')
});

第二种使用方法

  1. 选择特定存储引擎

默认情况下,localForage 按照以下顺序选择数据仓库的后端驱动:
(1) IndexedDB
(2) WebSQL
(3) localStorage
如果你想强制使用特定的驱动,可以使用 setDriver(),参数为以下的某一个或多个:
(1) localforage.INDEXEDDB
(2) localforage.WEBSQL
(3) localforage.LOCALSTORAGE

强制设置 localStorage 为后端的驱动

localforage.setDriver(localforage.LOCALSTORAGE);

列出可选的驱动,以优先级排序

localforage.setDriver([localforage.LOCALSTORAGE, localforage.INDEXEDDB]);
  1. 配置
    可以通过 config() 方法设置数据库信息。可用的选项有 driver,name,storeName,version,size,和 description。
localforage.config({
  driver      : localforage.LOCALSTORAGE, // 使用 LOCALSTORAGE;也可以使用 setDriver()
  name        : 'firstIndexedDB',
  version     : 1.0,
  size        : 4980736, // 数据库的大小,单位为字节。现仅 WebSQL 可用
  storeName   : 'keyvaluepairs1', // 仅接受字母,数字和下划线
  description : 'some description'
});
  1. 存值
    注意:在数据交互之前,你必须先调用 config()。即在使用 getItem(),setItem(),removeItem(),clear(),key(),keys() 或 length() 前要先调用 config()。
localforage.setItem("data1", "今天是个好日子");

vue3 localforage,vue3.0,存储,前端
5. 判断异步驱动程序初始化过程是否已完成文章来源地址https://www.toymoban.com/news/detail-788038.html

localforage.ready().then(()=> {
  // 当 localforage 将指定驱动初始化完成时,此处代码运行
  console.log(localforage.driver()); //返回正在使用的驱动的名字 "asyncStorage"
}).catch( e=> {
  console.log(e); // `No available storage method found.`
  // 当没有可用的驱动时,`ready()` 将会失败
});
  1. 判断浏览器是否支持driverName 返回布尔值
console.log(localforage.supports(localforage.INDEXEDDB));

到了这里,关于前端本地存储方案-localForage-vue3中使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 使用Mavon-Editor编辑器上传本地图片到又拍云云存储(Vue+SpringBoot)

    使用Mavon-Editor编辑器上传本地图片到又拍云云存储(Vue+SpringBoot)

    需求:将本地的图片上传到服务器或者云存储中,考虑之后,这里我选的是上传到又拍云云存储。 原理:Mavon-Editor编辑器有两个重要的属性和事件 所以需要将用到Mavon-Editor编辑器的组件中添加上这个属性和事件。 然后在方法中定义imgAdd函数 代码片段: 其中请求路径是你自

    2024年02月12日
    浏览(8)
  • 如何处理前端本地存储和缓存?

    如何处理前端本地存储和缓存?

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年02月08日
    浏览(5)
  • 基于本地存储LVM新建虚机方案

    基于本地存储LVM新建虚机方案

    基于本地存储LVM新建虚机方案 date: 2021/12/22 auth: mmwei3 一、环境信息如下: IP 角色 VGS 192.168.162.123 控制+计算+存储 cinder-volumes、cinder-volumes-ssd 192.168.162.124 控制+计算+存储 cinder-volumes、cinder-volumes-ssd 192.168.162.125 控制+计算+存储 cinder-volumes、cinder-volumes-ssd 二、需求方案: 1、虚机

    2024年02月08日
    浏览(4)
  • vue前端直接使用element-ui的upload组件上传到阿里云OSS存储

    vue前端直接使用element-ui的upload组件上传到阿里云OSS存储

    因为公司的服务器比较拉吧,所以老大决定将数据文件等上传到阿里云服务器,通过ali-oss方式,这样的话读取文件也比较快  (能看到这说明什么安装element-ui都会了,我就不详细介绍了,直接跳过)  在执行下面操作之前,你要确定你的阿里云能看到上边这个页面   这里主

    2024年02月10日
    浏览(10)
  • SpringBoot+Vue项目中遇到Not allowed to load local resource图片路径问题的两种解决方案(在后端映射本地路径或将图片转base64返回给前端)

    SpringBoot+Vue项目中遇到Not allowed to load local resource图片路径问题的两种解决方案(在后端映射本地路径或将图片转base64返回给前端)

    后端映射本地路径 转base64格式返回 如果是少量图片可以这么操作,不然图片多的话返回base64由于字符太长,传输速度很慢,会导致卡顿现象、加载慢、加载异常等情况出现。 图片转base64 base64转图片保存 headPhotoPath = “D:yangleProjectImageLocationheadPhoto” userPhotoPath = “nologin”

    2024年02月06日
    浏览(5)
  • Vue本地存储及用法

    Vue本地存储及用法

    目录 1.本地存储是什么? 2.本地存储的应用场景 3.存储的使用 4. 练习用法 1.本地存储是什么?         以文件的方式存储在本地,通过把数据存在浏览器中,用户不必每次都向服务器请求 获取同一个信息。在你离线时,使用本地存储的数据而不是向远端服务器上请求 数

    2024年02月09日
    浏览(6)
  • 使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行

    使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行

    vue项目打包后生成的dist目录如果直接在本地打开index.html,在浏览器中会报错,无法运行起来。 通常我是放到后端搭建的服务上面去运行,当时前端自己也可以是node,nuxt搭建服务器,写接口等等 如果想在本地运行,我们可以借助node.js+express搭建一个服务器,将打包后的文件部

    2024年02月03日
    浏览(10)
  • Vue3 - vite 引入本地图片方法,页面引入本地静态资源图像详细教程,解决 UI 前端组件库的图片属性无法使用本地图像问题(无论是本地开发还是打包部署,本地图片的路径正常可用)

    Vue3 - vite 引入本地图片方法,页面引入本地静态资源图像详细教程,解决 UI 前端组件库的图片属性无法使用本地图像问题(无论是本地开发还是打包部署,本地图片的路径正常可用)

    在 webpack 中通常用 require() 来引入静态图片,但在 vite 中这种方法就不行了。 本文实现了 在 vue3+vite 项目开发中,实现引入本地图片(静态资源),并且 build 打包后依然正常运行, 支持普通 img 标签使用,也支持 UI 组件库的各种 “图片属性” 当参数进行使用。 如下图所示

    2024年02月08日
    浏览(78)
  • Vue中TodoList案例_本地存储

    Vue中TodoList案例_本地存储

    App.vue 效果 :数据存储再localStroage中,刷新浏览器保存的数据仍在。   

    2024年02月15日
    浏览(8)
  • Vue CLI 本地存储 自定义事件

    存储内容大小一般支持 **5MB **左右(不同浏览器可能还不一样) 浏览器端通过 Window.sessionStorage 和 Window.localStorag e属性来实现本地存储机制 相关API xxxStorage.setItem(‘key’, ‘value’) :该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的

    2024年02月07日
    浏览(5)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包