最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue引入使用localforage改進(jìn)本地離線存儲(chǔ)方式(突破5M限制)

 更新時(shí)間:2024年03月11日 16:38:44   作者:明天也要努力  
這篇文章主要介紹了Vue引入使用localforage改進(jìn)本地離線存儲(chǔ)方式(突破5M限制),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1. 簡(jiǎn)介

說(shuō)到本地存儲(chǔ)數(shù)據(jù),首先想到的是 localStorage,應(yīng)該很多小伙伴都用過(guò),使用很簡(jiǎn)單。

然而,localStorage 卻有下面一些缺點(diǎn):

  • 存儲(chǔ)容量限制,大部分瀏覽器應(yīng)該最多5M。我就遇到過(guò)localStorage存儲(chǔ)字符然后尺寸爆掉的情況;
  • 僅支持字符串,如果是存對(duì)象還需將使用 JSON.stringify 和 JSON.parse 方法互相轉(zhuǎn)換,有些啰嗦;
  • 讀取都是同步的。大多數(shù)情況下,還挺好使的。如果存儲(chǔ)數(shù)據(jù)比較大,如一張重要圖片base64格式存儲(chǔ)了,再讀可能會(huì)有可感知的延遲時(shí)間;

localforage 的作用就是用來(lái)規(guī)避上面 localStorage 的缺點(diǎn),同時(shí)保留 localStorage 的優(yōu)點(diǎn)而設(shè)計(jì)的。

localForage 是一個(gè) JavaScript 庫(kù),通過(guò)簡(jiǎn)單類似 localStorage API 的 異步存儲(chǔ) 來(lái)改進(jìn)你的 Web 應(yīng)用程序的離線體驗(yàn)。

它能存儲(chǔ)多種類型的數(shù)據(jù),而不僅是字符串(包括:Array、ArrayBuffer、Blob、Float32Array、Float64Array、Int8Array、Int16Array、Int32Array、Number、Object、Uint8Array、Uint8ClampedArray、Uint16Array、Uint32Array、String)。

localForage 有一個(gè)優(yōu)雅降級(jí)策略,若瀏覽器不支持 IndexedDB 或 WebSQL,則使用 localStorage。

在所有主流瀏覽器中都可用:Chrome,F(xiàn)irefox,IE 和 Safari(包括 Safari Mobile)。

localForage 提供回調(diào) API 同時(shí)也支持 ES6 Promises API,可以自行選擇。

傳送門(mén):localForage 中文文檔

2. 使用方法

安裝

npm i localforage

localforage npm 地址

引入

// main.js
import localForage from 'localforage';
Vue.prototype.$forage = localForage;
<template>
  <div>
    <button @click="forageSetVal">forageSetVal</button>
    <button @click="forageGetVal">forageGetVal</button>
    <button @click="forageRemoveVal">forageRemoveVal</button>
    <ul>
      <li 
        v-for="item in userInfos" 
        :key="item.name">
        {{item.name}} | {{item.city}}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      userInfos:[],
    };
  },
  methods:{
    // 保存數(shù)據(jù)
    forageSetVal(){
      const userList = [
        {
          name:'張三',
          city:'北京',
        },{
          name:'李四',
          city:'南京',
        },{
          name:'王五',
          city:'深圳',
        }
      ]
      /*
      * setItem(key, value, successCallback)
      * 將數(shù)據(jù)保存到離線倉(cāng)庫(kù)。
      */
      this.$forage.setItem('userList', userList).then((val) => {
        console.log('setItem',val)
      }).catch(err => {
        console.log(err)
      })
    },
    // 獲取數(shù)據(jù)
    forageGetVal(){
      /*
      * getItem(key, successCallback)
      * 從倉(cāng)庫(kù)中獲取 key 對(duì)應(yīng)的值并將結(jié)果提供給回調(diào)函數(shù)。如果 key 不存在,getItem() 將返回 null。
      * 當(dāng)存儲(chǔ) undefined 時(shí), getItem() 也會(huì)返回 null。由于 localStorage 限制,同時(shí)出于兼容性的原因 localForage 無(wú)法存儲(chǔ) undefined。
      */
      this.$forage.getItem('userList').then((val) => {
        console.log('getItem',val)
        this.userInfos = val;
      }).catch(err => {
        console.log(err)
      });
    },
    // 從離線倉(cāng)庫(kù)中刪除 key 對(duì)應(yīng)的值
    forageRemoveVal(){
      /*
      * removeItem(key, successCallback)
      * 從離線倉(cāng)庫(kù)中刪除 key 對(duì)應(yīng)的值。
      */
      this.$forage.removeItem('userList').then(() => {
        console.log('removeItem');
      }).catch(function(err) {
        console.log(err);
      });
    },
  },
};
</script>

先觸發(fā) forageSetVal 保存數(shù)據(jù)

再觸發(fā) forageGetVal 獲取數(shù)據(jù)

最后觸發(fā) forageRemoveVal 刪除數(shù)據(jù)

3. localforage 和 indexDB 的區(qū)別

indexDB 為本地?cái)?shù)據(jù)庫(kù)存儲(chǔ),其功能非常強(qiáng)大,再?gòu)?fù)雜的結(jié)構(gòu)存儲(chǔ)都不在話下。localStorage 只是使用了其功能中的一部分,很多功能受限,如:localStorage 一次只能存一個(gè)字段。

indexDB幾乎空間無(wú)限,性能也不錯(cuò),各種數(shù)據(jù)結(jié)構(gòu)都支持,為何總感覺(jué)在業(yè)內(nèi)不溫不火呢?

很重要的原因之一就是上手成本,包括2方面:

  • 前端需要了解數(shù)據(jù)庫(kù)的一些基本概念,如:表,游標(biāo),事務(wù),鎖等。而業(yè)界普遍的前端都是與頁(yè)面打交道的,數(shù)據(jù)庫(kù)操作屬于后端的后端了,離的有些遠(yuǎn),于是,很多前端都不了解,需要從零開(kāi)始的數(shù)據(jù)庫(kù)學(xué)習(xí);
  • indexedDB 的 API 又多又長(zhǎng)又紛雜,學(xué)習(xí)成本高,容易記不住,網(wǎng)上好的資源少;

localforage 的出現(xiàn)可謂 曲 線 救 國(guó),通常我們的數(shù)據(jù)存儲(chǔ)并不需要特別復(fù)雜,只要不是完完全全的離線開(kāi)發(fā),localforage 足矣。

既不浪費(fèi) indexDB 的好,又避開(kāi)了 indexDB 高上手成本的坑。

從這個(gè)角度看,indexDB 應(yīng)該要謝謝 localforage。

當(dāng)然,如果存儲(chǔ)的數(shù)據(jù)是負(fù)責(zé)的多行多列表結(jié)構(gòu),還是老老實(shí)實(shí)花點(diǎn)功夫?qū)W習(xí)學(xué)習(xí) indexDB 的使用。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue運(yùn)行環(huán)境搭建全過(guò)程

    vue運(yùn)行環(huán)境搭建全過(guò)程

    這篇文章主要介紹了vue運(yùn)行環(huán)境搭建全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 關(guān)于keep-alive路由多級(jí)嵌套不生效的解決方案

    關(guān)于keep-alive路由多級(jí)嵌套不生效的解決方案

    本文主要介紹了關(guān)于keep-alive路由多級(jí)嵌套不生效的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue遞歸實(shí)現(xiàn)自定義tree組件

    vue遞歸實(shí)現(xiàn)自定義tree組件

    這篇文章主要為大家詳細(xì)介紹了vue遞歸實(shí)現(xiàn)自定義tree組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue中table多選/單選行,獲取其數(shù)據(jù)方式

    vue中table多選/單選行,獲取其數(shù)據(jù)方式

    這篇文章主要介紹了vue中table多選/單選行,獲取其數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue引用public目錄下文件的方式詳解

    vue引用public目錄下文件的方式詳解

    由于一些演示需要對(duì)一些簡(jiǎn)單頁(yè)面進(jìn)行配置,由于打包build后的vue項(xiàng)目基本已經(jīng)看不出原樣,因此需要?jiǎng)?chuàng)建一個(gè)文件,并在打包的時(shí)候不會(huì)進(jìn)行編譯,所以文件放在public,下面這篇文章主要給大家介紹了關(guān)于vue引用public目錄下文件的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 登錄模塊與token的使用和創(chuàng)建方式

    登錄模塊與token的使用和創(chuàng)建方式

    本文講述了如何在Vue中實(shí)現(xiàn)登錄、獲取用戶信息、退出登錄以及Token的使用方法,文章詳細(xì)介紹了登錄流程、獲取用戶信息、退出登錄以及Token的作用和使用方法
    2026-05-05
  • vue監(jiān)聽(tīng)滾動(dòng)事件的方法

    vue監(jiān)聽(tīng)滾動(dòng)事件的方法

    這篇文章主要介紹了vue監(jiān)聽(tīng)滾動(dòng)事件的方法,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-12-12
  • vuejs實(shí)現(xiàn)本地?cái)?shù)據(jù)的篩選分頁(yè)功能思路詳解

    vuejs實(shí)現(xiàn)本地?cái)?shù)據(jù)的篩選分頁(yè)功能思路詳解

    今天做項(xiàng)目需要一份根據(jù)本地?cái)?shù)據(jù)的篩選分頁(yè)功能,下面小編把vuejs實(shí)現(xiàn)本地?cái)?shù)據(jù)的篩選分頁(yè)功能的實(shí)現(xiàn)思路分享到腳本之家平臺(tái),需要的朋友可以參考下
    2017-11-11
  • 用npm安裝vue和vue-cli,并使用webpack創(chuàng)建項(xiàng)目的方法

    用npm安裝vue和vue-cli,并使用webpack創(chuàng)建項(xiàng)目的方法

    今天小編就為大家分享一篇用npm安裝vue和vue-cli,并使用webpack創(chuàng)建項(xiàng)目的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 微信內(nèi)置開(kāi)發(fā) iOS修改鍵盤(pán)換行為搜索的解決方案

    微信內(nèi)置開(kāi)發(fā) iOS修改鍵盤(pán)換行為搜索的解決方案

    今天小編就為大家分享一篇微信內(nèi)置開(kāi)發(fā) iOS修改鍵盤(pán)換行為搜索的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11

最新評(píng)論

崇左市| 万年县| 达日县| 兴化市| 鸡西市| 杭锦后旗| 通辽市| 宜宾县| 青神县| 阜康市| 虎林市| 佛坪县| 凉城县| 黄陵县| 镇康县| 耒阳市| 荆州市| 东丽区| 双峰县| 鹿邑县| 鲁山县| 平度市| 衡水市| 桂阳县| 长沙市| 高青县| 中宁县| 天门市| 浦江县| 井陉县| 黎川县| 宁夏| 荃湾区| 桃园市| 灌南县| 鹤山市| 丰镇市| 克什克腾旗| 昭通市| 民勤县| 东乡县|