本篇內(nèi)容介紹了“Vue怎么緩存”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比天門(mén)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式天門(mén)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋天門(mén)地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。Vue具體輕量級(jí)框架、簡(jiǎn)單易學(xué)、雙向數(shù)據(jù)綁定、組件化、數(shù)據(jù)和結(jié)構(gòu)的分離、虛擬DOM、運(yùn)行速度快等優(yōu)勢(shì),Vue中頁(yè)面使用的是局部刷新,不用每次跳轉(zhuǎn)頁(yè)面都要請(qǐng)求所有數(shù)據(jù)和dom,可以大大提升訪問(wèn)速度和用戶體驗(yàn)。
最近新做了個(gè)需求“前端緩存”
需求背景:解決表單高頻率重復(fù)填報(bào)問(wèn)題,要求打開(kāi)頁(yè)面自動(dòng)填充上次錄入的數(shù)據(jù),數(shù)據(jù)存儲(chǔ)期限為一周(7天有效期)。
說(shuō)起緩存首先想到的則是 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ù)沒(méi)有時(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ì)我所要開(kāi)發(fā)的需求不適用。如果只考慮這兩種方案的話,這么看來(lái)localstorage相對(duì)來(lái)說(shuō)會(huì)比較合適,但是如果使用localstorage存儲(chǔ)并且設(shè)置時(shí)效的話從代碼層面來(lái)看會(huì)比較麻煩。
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)目開(kāi)發(fā)中,我們可以寫(xiě)一個(gè)公用的方法來(lái)進(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) // 與過(guò)期時(shí)間比較 if (new Date().getTime() - dataObj.time > exp) { // 過(guò)期刪除返回null removeLocalStorage(key) console.log('信息已過(guò)期') return null } else { return dataObj.data } }
程序員較大的特點(diǎn)就是懶,有插件就絕不會(huì)放過(guò),能CV就絕對(duì)不手敲。由于寫(xiě)起來(lái)太繁瑣,所以果斷放棄使用localstorage,在另尋更簡(jiǎn)單方便的方法。通過(guò)同事的引薦最終選擇了Vue.ls,那就來(lái)介紹介紹 Vue.ls吧。
一個(gè)Vue封裝的本地儲(chǔ)存的方法。Vue插件,用于從Vue上下文中使用本地Storage,會(huì)話Storage和內(nèi)存Storage,簡(jiǎn)單易上手,Api說(shuō)明也是比較全面。
安裝
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); // 如果沒(méi)有設(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 說(shuō)明
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)聽(tīng) name在其他標(biāo)簽上的更改,更改時(shí)觸發(fā) callback, 傳遞以下參數(shù):
newValue: 當(dāng)前storage中 name, 從持久化的JSON中解析
oldValue: 舊的storage中 name, 從持久化的JSON中解析
url: 修改來(lái)自選項(xiàng)卡的URL
Vue.ls.off(name, callback)
刪除以前的偵聽(tīng)器 Vue.ls.on(name, callback)
實(shí)操
存儲(chǔ):鍵值對(duì)形式,最后一個(gè)參數(shù)為有效期
取值:參數(shù)為存進(jìn)去的鍵
查看:存儲(chǔ)的數(shù)據(jù)可在localstorage中查看
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來(lái)處理。
“Vue怎么緩存”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)頁(yè)題目:Vue怎么緩存-創(chuàng)新互聯(lián)
本文路徑:http://jinyejixie.com/article14/coidge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、定制網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容