zoukankan      html  css  js  c++  java
  • Vue keep-alive&路由守卫

    一 keep-alive

    缓存组件内容,避免组件反复加载,影响效率

    (1)在路由中配置:

     添加meta:{keepAlive:true}

    {
        path: '/',
        name: 'home',
        component: Home,
        meta:{
          keepAlive:true
        }
    }
    

    其中:keepAlive是自定义属性名,meta是用来专门保存自定义属性值的配置项

    (2)  App.vue中:

      如果当前路由需要缓存($route.meta.keepAlive==true),就放在keep-alive包裹的一个router-view中;

      如果当前路由不要缓存($route.meta.keepAlive==false),就keep-alive外的一个router-view上。

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

    此时:这个页面带有keepAlive为true的路由对应的页面,只在首次请求时,加载一次,以后的后退跳转操作,都不再重新渲染内容。

    二 路由守卫|路由钩子函数

    在发生路由跳转时,自动执行的回调函数

     

    如有需求:

        当从首页进入搜索列表页时是第一次加载,需要从服务器进行加载;然后从搜索列表页进入详情页也是第一次加载。

        但是当从详情页返回列表页,任然希望还是原来搜索到的商品,不需要从服务器加载,而是直接使用浏览器缓存的页面,此时需要keep-alive和路由守卫协同作用 

    (1)首页进入商品列表页,不需要缓存,需要重新搜索:

    index.vue(首页)中

    beforeRouteLeave(to,from,next){
        console.log(`离开首页...`);
        //如果从首页跳到products
        if(to.name=="products"){
          to.meta.keepAlive=false;
        }
        next();
    }
    

     products.vue(商品列表页)中:

    beforeRouterLeave(to,from,next){
          console.log(`离开商品列表页`);
          if(to.name=="details"){
              //如果去的是商品详情页,就缓存当前页面
              from.keepAlive=true;      
          }
    }        
    

     details.vue(商品详情页)中:

    beforeRouterLeave(to,from,next){
          console.log(`路由离开详情页面`);
          if(to.name=="products"){
                // 如果去的是原来的商品列表页,就缓存当前的压面,下次进入这个访问过的商品就不用重新加载了
                to.meta.keepAlive=true;    
          }        
    }    
    
  • 相关阅读:
    参考Shiro的自定义基于Spring的AOP横切模式
    Spring-@Value获取配置文件内容
    BeanPostProcessor Bean实例的初始化前后的自定义修改
    两台Linux主机之间免密scp复制文件及远程启动关闭Tomcat
    Shiro Realm领域
    test
    Linux 安装Oracle数据库
    Shiro Authorizer授权器
    HDU 1079 Calendar Game (博弈)
    MooFest POJ
  • 原文地址:https://www.cnblogs.com/codexlx/p/12497077.html
Copyright © 2011-2022 走看看