vue路由实现缓存
Vue 路由实现缓存的方法
使用 <keep-alive> 组件
在 Vue 路由中,可以通过 <keep-alive> 组件缓存路由组件,避免重复渲染。<keep-alive> 是 Vue 内置组件,用于缓存动态组件或路由组件。
<template>
<div id="app">
<keep-alive>
<router-view></router-view>
</keep-alive>
</div>
</template>
按需缓存特定路由
如果需要仅缓存某些路由组件,可以通过 include 或 exclude 属性指定缓存规则。include 接受组件名(name 属性)的数组,exclude 则排除某些组件。
<template>
<div id="app">
<keep-alive :include="['Home', 'Profile']">
<router-view></router-view>
</keep-alive>
</div>
</template>
结合路由元信息动态缓存
可以在路由配置中通过 meta 字段标记需要缓存的组件,动态控制缓存逻辑。

const routes = [
{
path: '/home',
name: 'Home',
component: Home,
meta: { keepAlive: true }
},
{
path: '/about',
name: 'About',
component: About,
meta: { keepAlive: false }
}
];
在模板中根据 meta 字段动态决定是否缓存:
<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>
缓存组件的生命周期钩子
被 <keep-alive> 缓存的组件会触发特定的生命周期钩子:

activated:组件被激活时调用(从缓存中恢复)。deactivated:组件被停用时调用(进入缓存)。
export default {
name: 'Home',
activated() {
console.log('Home 组件被激活');
},
deactivated() {
console.log('Home 组件被停用');
}
};
使用 key 强制更新缓存
默认情况下,相同组件在不同路由间切换时会复用实例。如果需要强制重新渲染,可以为 <router-view> 绑定唯一的 key。
<template>
<div id="app">
<keep-alive>
<router-view :key="$route.fullPath"></router-view>
</keep-alive>
</div>
</template>
清除缓存
如果需要手动清除缓存,可以通过 v-if 动态控制 <keep-alive> 的销毁与重建。
methods: {
clearCache() {
this.$refs.keepAlive && (this.$refs.keepAlive.cache = {});
}
}






