欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue的緩存方法示例詳解

 更新時(shí)間:2021年03月12日 10:23:33   作者:是li同學(xué)呀  
這篇文章主要給大家介紹了關(guān)于Vue緩存方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近新做了個(gè)需求“前端緩存”

需求背景:解決表單高頻率重復(fù)填報(bào)問題,要求打開頁(yè)面自動(dòng)填充上次錄入的數(shù)據(jù),數(shù)據(jù)存儲(chǔ)期限為一周(7天有效期)。
說起緩存首先想到的則是 localstorage、sessionStorage

sessionStorage

也稱會(huì)話緩存,當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)就會(huì)被刪除;

sessionStorage.setItem("key","value");//存儲(chǔ)
sessionStorage.getItems("key");//按可以進(jìn)行取值
sessionStorage.removeItems("key");//按key單個(gè)刪除
sessionStorage.clear();//刪除全部數(shù)據(jù)
sessionStorage.length;//獲取數(shù)據(jù)的數(shù)量
sessionStorage.valueOf();//獲取全部值

localstorage

儲(chǔ)存的數(shù)據(jù)沒有時(shí)間限制,只要不刪除,都會(huì)存在

localstorage.setItem("key","value");//保存數(shù)據(jù)
localstorage.getItem("key");//讀取數(shù)據(jù)
localstorage.removeItem("key",);//刪除單個(gè)數(shù)據(jù)
localstorage.clear();//刪除所有數(shù)據(jù)
localstorage.key(index);//得到某個(gè)索引的key
key和value都必須為字符串,web Storage的API只能操作字符串

由于sessionStorage瀏覽器關(guān)閉窗口數(shù)據(jù)會(huì)被清空,所以對(duì)我所要開發(fā)的需求不適用。如果只考慮這兩種方案的話,這么看來localstorage相對(duì)來說會(huì)比較合適,但是如果使用localstorage存儲(chǔ)并且設(shè)置時(shí)效的話從代碼層面來看會(huì)比較麻煩。

localstorage具體實(shí)現(xiàn)思路

1. 存儲(chǔ)數(shù)據(jù)時(shí)加上時(shí)間戳

當(dāng)數(shù)據(jù)較大時(shí),可以利用localstorage,存數(shù)據(jù)時(shí)候?qū)懭胍粋€(gè)時(shí)間,獲取的時(shí)候再與當(dāng)前時(shí)間進(jìn)行比較

在項(xiàng)目開發(fā)中,我們可以寫一個(gè)公用的方法來進(jìn)行存儲(chǔ)的時(shí)候加上時(shí)間戳

  export function setLocalStorageAndTime (key, value) {
  window.localStorage.setItem(key, JSON.stringify({ data: value, time: new Date().getTime() }))
  }

項(xiàng)目中應(yīng)用

  有數(shù)據(jù)再進(jìn)行存儲(chǔ) setLocalStorageAndTime('XXX', {name: 'XXX'})

2. 獲取數(shù)據(jù)時(shí)與當(dāng)前時(shí)間進(jìn)行比較

export function getLocalStorageAndTime (key, exp = 86400000) {
 // 獲取數(shù)據(jù)
 let data = window.localStorage.getItem(key)
 if (!data) return null
 let dataObj = JSON.parse(data)
 // 與過期時(shí)間比較
 if (new Date().getTime() - dataObj.time > exp) {
  // 過期刪除返回null
  removeLocalStorage(key)
  console.log('信息已過期')
  return null
 } else {
  return dataObj.data
 }
}

程序員最大的特點(diǎn)就是懶,有插件就絕不會(huì)放過,能CV就絕對(duì)不手敲。由于寫起來太繁瑣,所以果斷放棄使用localstorage,在另尋更簡(jiǎn)單方便的方法。通過同事的引薦最終選擇了Vue.ls,那就來介紹介紹 Vue.ls吧。

Vue.ls

一個(gè)Vue封裝的本地儲(chǔ)存的方法。Vue插件,用于從Vue上下文中使用本地Storage,會(huì)話Storage和內(nèi)存Storage,簡(jiǎn)單易上手,Api說明也是比較全面。

安裝

NPM

npm install vue-ls --save

Yarn

yarn add vue-ls

使用

Vue-ls Storage API
import Storage from 'vue-ls';
 
options = {
 namespace: 'vuejs__', // key鍵前綴
 name: 'ls', // 命名Vue變量.[ls]或this.[$ls],
 storage: 'local', // 存儲(chǔ)名稱: session, local, memory
};
 
Vue.use(Storage, options);
// 或 Vue.use(Storage);
 
new Vue({
  el: '#app',
  mounted: function() {
    Vue.ls.set('foo', 'boo');
    // 設(shè)置有效期
    Vue.ls.set('foo', 'boo', 60 * 60 * 1000); //有效1小時(shí)
    Vue.ls.get('foo');
    Vue.ls.get('boo', 10); // 如果沒有設(shè)置boo返回默認(rèn)值10 
    
    let callback = (val, oldVal, uri) => {
     console.log('localStorage change', val);
    } 
    
    Vue.ls.on('foo', callback) //偵查改變foo鍵并觸發(fā)回調(diào) 
    Vue.ls.off('foo', callback) //不偵查
    
    Vue.ls.remove('foo'); // 移除
  }
});

Global(全局)

Vue.ls

Context(上下文)

this.$ls

API 說明

Vue.ls.get(name, def)

返回storage中 name值。在返回之前,內(nèi)部解析JSON中的值

def: 默認(rèn)null, 如果為設(shè)置則返回 name.
Vue.ls.set(name, value, expire)

在storage設(shè)置 name的 value.并將 value轉(zhuǎn)化為 JSON

expire: 默認(rèn)為 null, name有效時(shí)間以毫秒為單位

Vue.ls.remove(name)

從 storage中移除 name. 成功移除 true, 否則返回false.

Vue.ls.clear()

清除storage.

Vue.ls.on(name, callback)

持續(xù)監(jiān)聽 name在其他標(biāo)簽上的更改,更改時(shí)觸發(fā) callback, 傳遞以下參數(shù):

  • newValue: 當(dāng)前storage中 name, 從持久化的JSON中解析
  • oldValue: 舊的storage中 name, 從持久化的JSON中解析
  • url: 修改來自選項(xiàng)卡的URL

Vue.ls.off(name, callback)

刪除以前的偵聽器 Vue.ls.on(name, callback)

實(shí)操

存儲(chǔ):鍵值對(duì)形式,最后一個(gè)參數(shù)為有效期

取值:參數(shù)為存進(jìn)去的鍵

查看:存儲(chǔ)的數(shù)據(jù)可在localstorage中查看

總結(jié)

localstorage(本地存儲(chǔ))則以文件的方式存儲(chǔ)在本地,永久保存;sessionstorage( 會(huì)話存儲(chǔ) ) ,臨時(shí)保存;Vue.ls是一個(gè)Vue封裝的本地儲(chǔ)存的方法,簡(jiǎn)單方便易上手。localStorage和sessionStorage只能存儲(chǔ)字符串類型,對(duì)于復(fù)雜的對(duì)象可以使用ECMAScript提供的JSON對(duì)象的stringify和parse來處理。

到此這篇關(guān)于Vue的緩存方法的文章就介紹到這了,更多相關(guān)Vue緩存方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3格式化Volar報(bào)錯(cuò)的原因分析與解決

    Vue3格式化Volar報(bào)錯(cuò)的原因分析與解決

    Volar 與vetur相同,volar是一個(gè)針對(duì)vue的vscode插件,下面這篇文章主要給大家介紹了關(guān)于Vue3格式化Volar報(bào)錯(cuò)的原因分析與解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 解析VUE中nextTick是什么

    解析VUE中nextTick是什么

    nextTick是Vue提供的一個(gè)全局API,由于Vue的異步更新策略導(dǎo)致我們對(duì)數(shù)據(jù)的修改不會(huì)立刻體現(xiàn),在DOM變化上,此時(shí)如果想要立即獲取更新后的DOM狀態(tài),就需要使用這個(gè)方法,這篇文章主要介紹了解析VUE中nextTick,需要的朋友可以參考下
    2022-11-11
  • webpack4+Vue搭建自己的Vue-cli項(xiàng)目過程分享

    webpack4+Vue搭建自己的Vue-cli項(xiàng)目過程分享

    這篇文章主要介紹了webpack4+Vue搭建自己的Vue-cli,對(duì)于vue-cli的強(qiáng)大,使用過的人都知道,極大的幫助我們降低了vue的入門門檻,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-08-08
  • el-checkbox-group?的v-model無法綁定對(duì)象數(shù)組的問題解決

    el-checkbox-group?的v-model無法綁定對(duì)象數(shù)組的問題解決

    elementUI官方文檔中el-checkbox-group組件綁定的都為一維數(shù)組,本文主要介紹了解決el-checkbox-group?的v-model無法綁定對(duì)象數(shù)組,感興趣的可以了解一下
    2023-05-05
  • Vue實(shí)現(xiàn)數(shù)字時(shí)鐘效果

    Vue實(shí)現(xiàn)數(shù)字時(shí)鐘效果

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)數(shù)字時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • vue等兩個(gè)接口都返回結(jié)果再執(zhí)行下一步的實(shí)例

    vue等兩個(gè)接口都返回結(jié)果再執(zhí)行下一步的實(shí)例

    這篇文章主要介紹了vue等兩個(gè)接口都返回結(jié)果再執(zhí)行下一步的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue中bus的使用及踩坑解決

    vue中bus的使用及踩坑解決

    這篇文章主要為大家詳細(xì)介紹了vue中bus的相關(guān)使用以及涉及到的問題與解決,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-08-08
  • 解決vue-cli項(xiàng)目開發(fā)運(yùn)行時(shí)內(nèi)存暴漲卡死電腦問題

    解決vue-cli項(xiàng)目開發(fā)運(yùn)行時(shí)內(nèi)存暴漲卡死電腦問題

    最近開發(fā)一個(gè)vue項(xiàng)目時(shí)遇到電腦卡死問題,突然間系統(tǒng)就非???,然后卡著卡著就死機(jī)了,鼠標(biāo)也動(dòng)不了了,只能冷啟動(dòng)。這篇文章主要介紹了vue-cli項(xiàng)目開發(fā)運(yùn)行時(shí)內(nèi)存暴漲卡死電腦問題,需要的朋友可以參考下
    2019-10-10
  • vue實(shí)現(xiàn)多個(gè)el-form表單提交統(tǒng)一校驗(yàn)的2個(gè)方法

    vue實(shí)現(xiàn)多個(gè)el-form表單提交統(tǒng)一校驗(yàn)的2個(gè)方法

    這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)多個(gè)el-form表單提交統(tǒng)一校驗(yàn)的2個(gè)方法,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 在vue3項(xiàng)目中使用新版高德地圖的完整步驟

    在vue3項(xiàng)目中使用新版高德地圖的完整步驟

    項(xiàng)目需求需要引入地圖,對(duì)于目前最新的Vue3.0,無論是百度/高德/騰訊地圖目前還沒有適配,只有Vue?2.x版本的:?目前只有谷歌地圖的Vue3.0適配,下面這篇文章主要給大家介紹了關(guān)于如何在vue3項(xiàng)目中使用新版高德地圖的完整步驟,需要的朋友可以參考下
    2023-02-02

最新評(píng)論