全局路由守卫、keep-alive组件缓存

导航守卫

正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中:全局的,单个路由独享的,或者组件级的。当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于等待中。 每个守卫方法接收两个参数:

to: 即将要进入的目标 用一种标准化的方式

from: 当前导航正要离开的路由 用一种标准化的方式

// GOOD router.beforeEach((to, from, next) => { if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' }) else next() })

keep-alive

keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM, keep-alive包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们

使用原则:当我们在某些场景下不需要让页面重新加载时我们可以使用keepalive。

{

  path: 'list',

  name: 'itemList', // 列表页

  component (resolve) {

    require(['@/pages/item/list'], resolve)

},

meta: {

  keepAlive: true,

  title: '列表页'

}

}

<div id="app" class='wrapper'>

    <keep-alive>

        <!-- 需要缓存的视图组件 -->

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

    </keep-alive>

      <!-- 不需要缓存的视图组件 -->

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

</div>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容