• 【浏览器】端数据库存储方案----indexDB、localForage


    localStorage

    说到本地存储数据,首先想到的是 localStorage,应该很多小伙伴都用过,使用很简单。然而,localStorage 却有下面一些缺点:

    • 存储容量限制,大部分浏览器应该最多5M。我就遇到过localStorage存储字符然后尺寸爆掉的情况;
    • 仅支持字符串,如果是存对象还需将使用 JSON.stringify 和 JSON.parse 方法互相转换,有些啰嗦;
    • 读取都是同步的。大多数情况下,还挺好使的。如果存储数据比较大,如一张重要图片base64格式存储了,再读可能会有可感知的延迟时间;

    localforage

    官网文档

    localforage 的作用就是用来规避上面 localStorage 的缺点,同时保留 localStorage 的优点而设计的。
    localForage 是一个 JavaScript 库,通过简单类似 localStorage API 的 异步存储 来改进你的 Web 应用程序的离线体验。

    localForage 有一个优雅降级策略,若浏览器不支持 IndexedDB 或 WebSQL,则使用 localStorage。在所有主流浏览器中都可用:Chrome,Firefox,IE 和 Safari(包括 Safari Mobile)。

    localForage 提供回调 API 同时也支持 ES6 Promises API,你可以自行选择。
    
    • 1

    使用

    npm install localforage
    -----------------
    import localforage from "localforage";
    localforage.config({
      name: 'db_name'
    });
    
    Vue.prototype.$localForage = localforage;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    
    // 存储数据
    let res = {
        data: {
            username: 'wahaha'
        }
    }
    this.$forage.setItem('userInfo', res.data).then(() => {
         // 当值被存储后,可执行其他操作
    }).catch(err => {
        // 当出错时,此处代码运行
        console.log(err)
    })
     
    // 获取数据
    this.$forage.getItem('userInfo').then((val) => {
         // 获取到值后,可执行其他操作
         console.log(value)
    }).catch(err => {
        // 当出错时,此处代码运行
        console.log(err)
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

    IndexDB

    IndexDB 为本地数据库存储,其功能非常强大,再复杂的结构存储都不在话下。localStorage 只是使用了其功能中的一部分,很多功能受限,如:localStorage 一次只能存一个字段。
    indexDB几乎空间无限,性能也不错,各种数据结构都支持,为何总感觉在业内不温不火呢?
    很重要的原因之一就是上手成本,包括2方面:

    前端需要了解数据库的一些基本概念,如:表,游标,事务,锁等。而业界普遍的前端都是与页面打交道的,数据库操作属于后端的后端了,离的有些远,于是,很多前端都不了解,需要从零开始的数据库学习;
    indexedDB 的 API 又多又长又纷杂,学习成本高,容易记不住,网上好的资源少

  • 相关阅读:
    【Python大数据】PySpark
    Java低代码开发:jvs-list(列表引擎)功能(二)字段及样式配置
    webpack分环境打包(生产/开发两套打包)
    el-date-picker 禁止选择当前年之前或者之后的年份
    干货分享:谷歌主动搜索开发客户的万能公式
    一文掌握基于深度学习的人脸表情识别开发(基于PaddlePaddle)
    E. Yet Another Array Counting Problem
    Python开发指南[2]之人脸模型训练与人脸识别
    STM32MP157F-DK2 使用体验
    Linux基础篇-文件句柄数修改
  • 原文地址:https://blog.csdn.net/weixin_42910765/article/details/132596583