91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue怎么緩存

發布時間:2021-03-12 17:13:14 來源:億速云 閱讀:354 作者:TREX 欄目:開發技術

本篇內容介紹了“Vue怎么緩存”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Vue的優點

Vue具體輕量級框架、簡單易學、雙向數據綁定、組件化、數據和結構的分離、虛擬DOM、運行速度快等優勢,Vue中頁面使用的是局部刷新,不用每次跳轉頁面都要請求所有數據和dom,可以大大提升訪問速度和用戶體驗。

最近新做了個需求“前端緩存”

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

sessionStorage

也稱會話緩存,當用戶關閉瀏覽器窗口后,數據就會被刪除;

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

localstorage

儲存的數據沒有時間限制,只要不刪除,都會存在

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

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

localstorage具體實現思路

1. 存儲數據時加上時間戳

當數據較大時,可以利用localstorage,存數據時候寫入一個時間,獲取的時候再與當前時間進行比較

在項目開發中,我們可以寫一個公用的方法來進行存儲的時候加上時間戳

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

項目中應用

  有數據再進行存儲 setLocalStorageAndTime('XXX', {name: 'XXX'})

2. 獲取數據時與當前時間進行比較

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

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

Vue.ls

一個Vue封裝的本地儲存的方法。Vue插件,用于從Vue上下文中使用本地Storage,會話Storage和內存Storage,簡單易上手,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', // 存儲名稱: session, local, memory
};
 
Vue.use(Storage, options);
// 或 Vue.use(Storage);
 
new Vue({
  el: '#app',
  mounted: function() {
    Vue.ls.set('foo', 'boo');
    // 設置有效期
    Vue.ls.set('foo', 'boo', 60 * 60 * 1000); //有效1小時
    Vue.ls.get('foo');
    Vue.ls.get('boo', 10); // 如果沒有設置boo返回默認值10 
    
    let callback = (val, oldVal, uri) => {
     console.log('localStorage change', val);
    } 
    
    Vue.ls.on('foo', callback) //偵查改變foo鍵并觸發回調 
    Vue.ls.off('foo', callback) //不偵查
    
    Vue.ls.remove('foo'); // 移除
  }
});

Global(全局)

Vue.ls

Context(上下文)

this.$ls

API 說明

Vue.ls.get(name, def)

返回storage中 name值。在返回之前,內部解析JSON中的值

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

在storage設置 name的 value.并將 value轉化為 JSON

expire: 默認為 null, name有效時間以毫秒為單位

Vue.ls.remove(name)

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

Vue.ls.clear()

清除storage.

Vue.ls.on(name, callback)

持續監聽 name在其他標簽上的更改,更改時觸發 callback, 傳遞以下參數:

  • newValue: 當前storage中 name, 從持久化的JSON中解析

  • oldValue: 舊的storage中 name, 從持久化的JSON中解析

  • url: 修改來自選項卡的URL

Vue.ls.off(name, callback)

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

實操

Vue怎么緩存

存儲:鍵值對形式,最后一個參數為有效期

Vue怎么緩存

取值:參數為存進去的鍵

查看:存儲的數據可在localstorage中查看

總結

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

“Vue怎么緩存”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

漾濞| 安龙县| 宜城市| 甘孜| 班玛县| 礼泉县| 宝坻区| 丽水市| 南汇区| 滦平县| 察哈| 金乡县| 聊城市| 青铜峡市| 西充县| 绥中县| 富民县| 萝北县| 泸西县| 崇礼县| 灵宝市| 富顺县| 鲜城| 屏山县| 罗江县| 芷江| 房产| 吉隆县| 郸城县| 马山县| 英德市| 桑植县| 霸州市| 平定县| 禄丰县| 汕尾市| 通许县| 邮箱| 汉川市| 张家口市| 揭东县|