亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vuex和前端緩存的整合策略詳解

2019-11-19 16:38:01
字體:
來源:轉載
供稿:網友

如何存放或更新緩存?

緩存數據來源是預知的,我們可以預先定義哪些 mutation 是緩存相關的。

我們期望這個過程更自然一點,通過某種變化自動映射,使以后不管緩存類別增加還是減少都能修改極少的代碼來應對變化。

Vuex的插件可以攔截 mutations,借助這個機制,我們可以制定一種策略化的規則。

可以規定,所有需要更新緩存的 mutationType 都要符合這種格式:module-type-cacheKey,非緩存的 mutationType 格式為 module-type。

那么就可以攔截 mutation,去做我們想做的事了:

store.subscribe(({ type, payload }) => { const cacheKey = type.split('-')[2] if (cacheKey) {  Cache.save(cacheKey, payload) }})

如何從緩存取數據避免請求?

只需要在緩存相關的 action 中加入緩存判斷。

actionfetchData({commit}) { const cacheData = Cache.get(cacheKey) if(!cacheData) {  Api.getData().then(data => {   commit(mutationType, data)  }) } else {  commit(mutationType, cacheData) }}

設計優化

以上的確已經足夠完成緩存 讀取 --> 更新 的工作了。但試想一下將來某個其他數據類別要做緩存,我們就要把上面的代碼格式再搬一遍。

即:把新的需要緩存的數據類別對應的 mutationType 加 cacheKey 后綴,把獲取數據的 action 中加緩存判斷。

雖然實際編碼中也沒有多大的工作量,但感覺還不是最好的開發體驗。

action優化

action 中的痛點是:每次都需要重復寫緩存判斷??梢园堰@個判斷過程拿出來放到一個大家都能訪問到的公共的地方,且最好是與 Vuex 契合的。

Vuex 支持 action 相互調用,我們可以設置一個單獨的 action 用來提交。

commitAction({ commit }, mutationType, getData) { const cacheKey = mutationType.split('-')[2] const cacheData = Cache.get(cacheKey || '') if(!cacheData) {  getData().then(data => {   commit(mutationType, data)  }) } else {  commit(mutationType, cacheData) }},fetchData({ dispatch }) { dispatch('commitAction', mutationType, Api.getData)}

不管是否需要緩存最終都走同一個 action 去提交,由這個 action 去做決策。

mutation優化

mutation 的痛點在于:加后綴?。〖雍缶Y?。?!

如果一個數據的相關邏輯復雜,可能對應很多個 mutationType,每個都需要:加后綴!

要是代碼能自動識別需要走緩存的 mutationType 就完美了!

mutationType 默認的格式為 module-type,假如業務中一個 module 對應一個數據類別,我們就可以基于 module 作緩存識別。

cacheConfig.jsexport default { module1: 'key1', module2: 'key2', //...}
actioncommitAction({ commit }, mutationType, getData) { const module = mutationType.split('-')[0] const cacheKey = CacheConfig[module] || '' const cacheData = Cache.get(cacheKey) if(!cacheData) {  getData().then(data => {   commit(mutationType, data)  }) } else {  commit(mutationType, cacheData) }},fetchData({ dispatch }) { dispatch('commitAction', mutationType, Api.getData)}interceptorstore.subscribe(({ type, payload }) => { const module = type.split('-')[0] const cacheKey = CacheConfig[module] if (cacheKey) {  Cache.save(cacheKey, payload) }})

當我們需要新增或減少緩存數據,只需要去 cacheConfig 中增加或減少一項模塊配置。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线第一页| 久久精品久久久久| 亚洲女人天堂成人av在线| 欧美激情在线视频二区| 国产日韩精品一区二区| 伊人成人开心激情综合网| 亚洲精品中文字幕有码专区| 国产一区二区黑人欧美xxxx| 亚洲成人久久久| 亚洲免费精彩视频| 18性欧美xxxⅹ性满足| 日本精品一区二区三区在线播放视频| 成人深夜直播免费观看| 91精品国产乱码久久久久久久久| 欧美电影免费播放| 国产成人精品电影久久久| 欧美又大粗又爽又黄大片视频| 欧日韩在线观看| 另类天堂视频在线观看| 国产精品一区二区电影| 久久精品电影网| 久久久久久国产精品| 成人激情视频免费在线| 亚洲国产美女精品久久久久∴| 亚洲最大福利网| 国产精品99久久久久久久久| 亚洲午夜小视频| 亚洲一区亚洲二区| 欧美在线视频网| 久久精品视频在线| 亚洲精品免费一区二区三区| 欧美激情日韩图片| 国模极品一区二区三区| 久久久国产精彩视频美女艺术照福利| 亚洲一区二区久久久久久| 91在线视频精品| 欧美激情图片区| 精品国产区一区二区三区在线观看| 久久国产精品久久久| 久久色在线播放| 亚洲欧洲中文天堂| 黄网动漫久久久| 日韩欧美成人免费视频| 日韩美女在线观看一区| 91精品视频在线看| 热门国产精品亚洲第一区在线| 国产精品2018| 亚洲欧美日韩精品久久亚洲区| 亚洲第一视频网| 日韩欧美国产骚| 在线观看日韩视频| 91精品视频在线看| 欧美肥臀大乳一区二区免费视频| 91精品视频在线播放| 成人黄在线观看| 欧美视频二区36p| 日韩亚洲精品电影| 欧美日韩中文字幕日韩欧美| 日韩成人在线视频网站| 欧美日韩黄色大片| 国产ts人妖一区二区三区| 日韩美女主播视频| 宅男66日本亚洲欧美视频| 日韩av最新在线| 日韩福利视频在线观看| 国产精品福利在线观看| 最近2019中文字幕在线高清| 亚洲影院高清在线| 欧美人与物videos| 精品中文视频在线| 亚洲影院在线看| 亚洲黄色av网站| 热99在线视频| 亚洲国产精品悠悠久久琪琪| 一区二区亚洲欧洲国产日韩| 韩国视频理论视频久久| 亚洲天堂色网站| 久久91亚洲精品中文字幕| 国产精品久久久久久久美男| 欧美又大粗又爽又黄大片视频| 一区二区三区黄色| 欧美日韩国产中文精品字幕自在自线| 日韩精品黄色网| 久热精品视频在线观看一区| 91美女福利视频高清| 国内精久久久久久久久久人| 久久这里只有精品99| 亚洲深夜福利在线| 欧美激情第一页xxx| 亚洲最大av网站| 亚洲图中文字幕| 亚洲xxxx妇黄裸体| 久久噜噜噜精品国产亚洲综合| 91精品美女在线| 精品国产一区二区三区四区在线观看| 成人精品网站在线观看| 不卡在线观看电视剧完整版| 久久久精品电影| 成人精品一区二区三区| 97免费视频在线播放| 亚洲国产天堂网精品网站| 欧日韩在线观看| 92福利视频午夜1000合集在线观看| 欧美性猛交xxxx黑人猛交| 欧美疯狂性受xxxxx另类| 亚洲免费伊人电影在线观看av| 久久久久久久久久久久av| 成人精品一区二区三区电影免费| 色综合久久天天综线观看| 91久久国产婷婷一区二区| 国产一区二区三区视频在线观看| 国产一区二区三区视频在线观看| 日韩成人小视频| 视频直播国产精品| 国产精品久久久久久久久久久新郎| 91综合免费在线| 91国在线精品国内播放| 欧美日韩国产精品一区| 青草青草久热精品视频在线观看| 久久综合九色九九| 黄网站色欧美视频| 8090成年在线看片午夜| 成人激情免费在线| 欧洲亚洲女同hd| 亚洲成avwww人| 欧美精品videosex牲欧美| 日韩精品免费电影| 色噜噜狠狠狠综合曰曰曰| 日韩一区二区精品视频| 久久久成人精品| 午夜精品蜜臀一区二区三区免费| 91夜夜揉人人捏人人添红杏| 色综合久久中文字幕综合网小说| 91夜夜未满十八勿入爽爽影院| 国产精品女视频| 色老头一区二区三区在线观看| 日韩av在线一区二区| 亚洲国产精品国自产拍av秋霞| 国产欧美精品一区二区三区介绍| 精品无人国产偷自产在线| 亚洲一区二区三区毛片| 亚洲日韩中文字幕在线播放| 亚洲自拍小视频免费观看| 18性欧美xxxⅹ性满足| 日韩在线欧美在线国产在线| 日韩av片永久免费网站| 亚洲最大福利网站| 成人免费视频网址| 中文字幕精品国产| 久久亚洲精品小早川怜子66| 亚洲欧美另类在线观看| 欧美色道久久88综合亚洲精品| 国产精品白丝av嫩草影院| 欧美激情一区二区三区成人| 久久精品国产久精国产思思| 精品国内产的精品视频在线观看| 亚洲精品国精品久久99热| 亚洲欧洲日产国码av系列天堂| 精品久久久久久久久久久| 久久在精品线影院精品国产| 91社区国产高清| 亚洲国产精品久久久久秋霞蜜臀| 亚洲成人久久久| 久久99热这里只有精品国产|