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

vue移動端項目緩存問題實踐記錄

 更新時間:2018年10月29日 17:14:12   作者:rocky191  
最近在做一個vue移動端項目,被緩存問題搞得頭都大了,積累了一些經驗,特此記錄總結下,分享到腳本之家平臺,對vue移動端項目緩存問題實踐記錄感興趣的朋友跟隨小編一起看看吧

最近在做一個vue移動端項目,被緩存問題搞得頭都大了,積累了一些經驗,特此記錄總結下,權當是最近項目問題的一個回顧吧!

先描述下問題場景:A頁面->B頁面->C頁面。假設A頁面是列表頁面,B頁面是列表詳情頁面,C頁面是操作改變B頁面的一些東西,進行提交類似的操作。A頁面進入B頁面,應該根據不同的列表item顯示不一樣的詳情,從B進入C,也應該根據item的標識比如ID展示不一樣的內容,在C頁面操作后,返回B頁面,B頁面數(shù)據發(fā)生變化。這個時候會有兩種情況:

  • C頁面操作數(shù)據后返回B頁面,B頁面對應數(shù)據應該發(fā)生變化。
  • C頁面直接點擊左上角箭頭返回,B頁面對應數(shù)據不應該發(fā)生變化。繼續(xù)返回A列表頁面,換一條數(shù)據,繼續(xù)進入B頁面,B頁面展示不同內容,進入C頁面,C頁面刷新展示不同內容

另一種情況發(fā)生在寫郵件的頁面中,添加收件人,選人之后,繼續(xù)添加,之前添加的聯(lián)系人應該存在。但是從寫郵件頁面返回郵件列表再次進入寫郵件頁面,之前添加過的聯(lián)系人數(shù)據就不應該存在了,這里就涉及到如何處理緩存,何時使用緩存,何時清除緩存的問題了。

目前項目整體結構如下:

<template>
 <div id="app">
  <keep-alive>
   <router-view v-if="$route.meta.keepAlive"></router-view>
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive"></router-view>
 </div>
</template>

雖然官方提供了include,exclude,可以讓我們決定哪些組件使用緩存,哪些不使用緩存,但是并沒有解決我們想動態(tài)使用緩存的目的,目前我的項目使用了如下兩種方式處理緩存:

方式一 ,使用是否使用緩存標識

在路由文件router.js里給每個路由添加meta信息,標識是否使用緩存。

meta: {
  isUseCache: false,//不使用緩存
  keepAlive: true
}

使用方式:

A->B,B不能緩存;B->A,A緩存。

(1)A頁面:

beforeRouteLeave(to, from, next) {
 // 設置下一個路由的 meta
 if(to.path=='/B'){
  to.meta.isUseCache = false;
 }
 next();
},
activated(){
  if(!this.$route.meta.isUseCache){
    this.getData();
  }
}

(2) B頁面

beforeRouteLeave(to, from, next) {
 // 設置下一個路由的 meta
 if(to.path=='/A'){
  to.meta.isUseCache = true;
 }
 next();
},
activated(){
  if(!this.$route.meta.isUseCache){
    this.getData();
  }
} 

方式二,強制清除緩存。

這種方式是從網上找的一種方式,使用了vue內部組件之后,不在支持動態(tài)銷毀組件,緩存一直存在,只能從源頭上下手,清掉緩存。

export const removeCatch = {
 beforeRouteLeave:function(to, from, next){
  if (from && from.meta.rank && to.meta.rank && from.meta.rank>to.meta.rank)
   {//此處判斷是如果返回上一層,你可以根據自己的業(yè)務更改此處的判斷邏輯,酌情決定是否摧毀本層緩存。
     if (this.$vnode && this.$vnode.data.keepAlive)
     {
       if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache)
       {
         if (this.$vnode.componentOptions)
         {
           var key = this.$vnode.key == null
                 ? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
                 : this.$vnode.key;
           var cache = this.$vnode.parent.componentInstance.cache;
           var keys = this.$vnode.parent.componentInstance.keys;
           if (cache[key])
           {
             if (keys.length) {
               var index = keys.indexOf(key);
               if (index > -1) {
                 keys.splice(index, 1);
               }
             }
             delete cache[key];
           }
         }
       }
     }
     this.$destroy();
   }
   next();
 }
};

在需要清掉緩存的頁面混合引入該js即可。

總結

以上所述是小編給大家介紹的vue移動端項目緩存問題實踐記錄,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 基于vue hash模式微信分享#號的解決

    基于vue hash模式微信分享#號的解決

    這篇文章主要介紹了基于vue hash模式微信分享#號的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue3如何理解ref toRef和toRefs的區(qū)別

    Vue3如何理解ref toRef和toRefs的區(qū)別

    本文主要介紹了Vue3如何理解ref toRef和toRefs的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • vue 實現(xiàn)邊輸入邊搜索功能的實例講解

    vue 實現(xiàn)邊輸入邊搜索功能的實例講解

    今天小編就為大家分享一篇vue 實現(xiàn)邊輸入邊搜索功能的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue2中使用sass并配置全局的sass樣式變量的方法

    vue2中使用sass并配置全局的sass樣式變量的方法

    這篇文章主要介紹了vue2中使用sass并配置全局的sass樣式變量的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • vue中的.$mount(''#app'')手動掛載操作

    vue中的.$mount(''#app'')手動掛載操作

    這篇文章主要介紹了vue中.$mount('#app')手動掛載操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue.js動態(tài)設置VueComponent高度遇到的問題及解決

    vue.js動態(tài)設置VueComponent高度遇到的問題及解決

    這篇文章主要介紹了vue.js動態(tài)設置VueComponent高度遇到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue中內置指令與自定義指令語法詳解

    Vue中內置指令與自定義指令語法詳解

    這篇文章主要為大家介紹了Vue中內置指令與自定義指令語法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 基于Vue實現(xiàn)簡單的貪食蛇游戲

    基于Vue實現(xiàn)簡單的貪食蛇游戲

    貪食蛇是一個非常經典的游戲,?在游戲中,?玩家操控一條細長的直線,?它會不停前進,?玩家只能操控蛇的頭部朝向,?一路拾起觸碰到之物。本文將用Vue實現(xiàn)這一游戲,感興趣的可以嘗試一下
    2022-04-04
  • Vue中router-view無法顯示的解決辦法

    Vue中router-view無法顯示的解決辦法

    這篇文章主要給大家介紹了關于Vue中router-view無法顯示的解決辦法,router-view組件作為vue最核心的路由管理組件,在項目中作為路由管理經常被使用到,需要的朋友可以參考下
    2023-07-07
  • vue3項目中ESLint配置和使用

    vue3項目中ESLint配置和使用

    在用vite創(chuàng)建vue3項目時已經選擇了添加ESLint,本文就來介紹一下ESLint在項目中需要怎樣配置和使用,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09

最新評論