关于VUE路由跳转的缓存问题

由于自己是刚学的vue,所以对vue挺多不解的问题。希望各位码友能够指出我的不对,或者给我更好的建议。

关于项目

最近在做一个项目,整个项目是由vue+vue-router+vue-cli+webpack+mui+H5 plus+ 构建的一个混合开发项目。通过Hbuilder打包成APK。原本项目是直接在Hbuilder开发的,使用的也是Hbuilder自动生成的框架。后来想把项目重构。所以才有机会学习webpack+vue-cli+vue-router,可是问题来了,相对于一些安卓版本较低的手机来说,重构的项目在手机里经常崩掉。我想了解一下是什么原因呢?手机的问题,还是说vue不适合做混合式开发。

关于VUE路由缓存问题。

不知大家有没有遇到一个问题就是,经常路由间的跳转会出现一些缓存的问题,解决起来很麻烦,那么先讲讲我在项目中怎么处理这些缓存问题。

这是整个资源文件的目录,也就是vue-cli构建的整个项目,在这个router文件夹下的index.js引入组件。

项目目录

基本上组件都是这样引入

import Vue from 'vue'
import Router from 'vue-router'
import Index from '@/pages/index' 
import Login from '@/pages/login' 
import Home from '@/pages/home' 

Vue.use(Router)

export default new Router({
  routes: [{
      path: '/index',
      name: 'Index',//要注意这里要引号,之前这里没加引号,爬了好久
      component: Index,
    },
    {
      path: '/login',
      name: 'Login',
      component: Login,
    },
    {
      path: '/home',
      name: 'Home',
      component: Home,
    }]
})

页面之间的跳转,我用的是这种方式:

例如我在index.vue页面想跳到login.vue页面时

this.$router.push({
  name: 'Login',
  params: {
    data:'abc'
  }
});

如果login.vue页面是没有加载过的话,就会按照生命周期执行,但是下次在进入这个login页面,login页面是不会刷新的,当然我们可以利用路由的activated方法来重新刷新数据。

<template>
</template>
<script>
export default {
    data() {
      return {}
    },
    activated(){
        this.init();
    },
    methods:{
        init(){},
    }
}

</script>
<style>
</style>

这样一来,每次进入login页面都会刷新数据,避免了有时候数据的缓存导致了信息的不一致。

那么问题来了,假如我想index页面进入login时刷新数据,而home页面进入login页面不刷新数据,该怎么操作?我本来的做法是每次在路由的params里添加一个标志是否刷新页面的参数过去就行啦,例如:

this.$router.push({
  name: 'Login',
  params: {
    data:'abc',
    isFresh:true//标志刷新,false为不刷新
  }
});

login页面对isFresh进行判断,作出相应的处理

<template>
</template>
<script>
export default {
    data() {
      return {}
    },
    activated(){
        if(this.$route.params.isFresh){
            //注意路由跳转时$router.push()和$route.params的route,一个带r
            this.init();
        }else{} 
    },
    methods:{
        init(){},
    }
}

</script>
<style>
</style>

但是这样一来很多页面进入login页面都要携带一个是否刷新的标志。这样的话会非常的不方便。

后来发现了导航守卫的beforeRouteEnter方法,感觉可以在这个方法里处理一下逻辑。但是不好的一点是beforeRouteEnter方法是没办法使用this去执行init();

<template>
</template>
<script>
export default {
    data() {
      return {}
    },
    activated(){
        
    },
    methods:{
        init(){},
    },
    beforeRouteEnter(to, from, next) {
      if (from.name == 'Index') {
        this.init();//执行不了
      }
      next();
    }
}

</script>
<style>
</style>

但是有种方法可以解决this不能使用的问题

<template>
</template>
<script>
export default {
    data() {
      return {}
    },
    activated(){
        if (this.$route.meta.isFresh) {
            init();
        }else{}
      this.$route.meta.isFresh = false;//记得这里一定要设置一下false。
    },
    methods:{
        init(){},
    },
    beforeRouteEnter(to, from, next) {
      if (from.name == 'Index') {
        to.meta.isFresh = true;
      }
      next();
    }
}

</script>
<style>
</style>

这样一来,所有页面的刷新与否都在login页面处理了。虽然这两种方法用起来差不多,代码量也差不多,但是我还是觉得在login页面可以统一处理,逻辑会清晰很多。

没有用过keep-Alive,所以不懂keep-Alive是否有强大作用,希望各大码友摔个链接让我膜拜一下,我处理刷新缓存问题都是用以上方法,但是这样刷新也是挺烦的,不知道有没有更好的方法对于这种刷新缓存的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349