当前位置:首页 > VUE

vue keep alive实现

2026-03-08 12:49:43VUE

Vue Keep-Alive 实现

Vue 的 keep-alive 是一个内置组件,用于缓存动态组件或路由组件,避免重复渲染和销毁,从而提升性能。以下是其核心实现方法和使用场景。

基本用法

在模板中直接包裹需要缓存的组件或路由视图:

<keep-alive>
  <component :is="currentComponent"></component>
</keep-alive>

或用于路由:

<keep-alive>
  <router-view></router-view>
</keep-alive>

缓存特定组件

通过 includeexclude 属性控制哪些组件需要缓存。支持字符串、正则表达式或数组:

vue keep alive实现

<keep-alive :include="['ComponentA', 'ComponentB']">
  <component :is="currentComponent"></component>
</keep-alive>

生命周期钩子

被缓存的组件会触发 activateddeactivated 钩子,而非 createddestroyed

export default {
  activated() {
    console.log('组件被激活');
  },
  deactivated() {
    console.log('组件被停用');
  }
};

结合路由的 meta 配置

在路由配置中通过 meta 标记需要缓存的组件:

vue keep alive实现

const routes = [
  {
    path: '/a',
    component: ComponentA,
    meta: { keepAlive: true }
  }
];

router-view 中动态判断:

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

缓存实例限制

通过 max 属性限制最大缓存实例数,超出时最早缓存的实例会被销毁:

<keep-alive :max="5">
  <router-view></router-view>
</keep-alive>

实现原理

keep-alive 的核心原理是通过 LRU(最近最少使用)算法管理缓存。其内部维护一个缓存对象(cache)和一个键数组(keys),当组件切换时:

  • 命中缓存时直接从 cache 中提取实例。
  • 未命中时缓存新实例,并淘汰最久未使用的实例(如果达到 max 限制)。

标签: vuekeep
分享给朋友:

相关文章

vue实现全屏

vue实现全屏

Vue 实现全屏功能的方法 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 来实现。以下是几种常见的实现方式: 使用原生 Fullscreen API 通过调用 doc…

vue实现flvvideo

vue实现flvvideo

vue-flv-player 实现 FLV 视频播放 安装依赖包 npm install flv.js vue-flv-player 基础组件引入 <template> <v…

vue实现 hover

vue实现 hover

实现 Vue 中的 hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是常见的几种方法: 使用 CSS 伪类 最简单的方式是直接使用 CSS 的 :hover 伪类,无…

vue实现白板

vue实现白板

Vue实现白板功能 使用Vue实现白板功能可以通过HTML5的Canvas API结合Vue的响应式特性来完成。以下是实现白板功能的关键步骤: 安装依赖 在Vue项目中安装必要的依赖,如vue-dr…

vue实现 treegrid

vue实现 treegrid

Vue 实现 TreeGrid 的方法 使用现成组件库 Element UI、Ant Design Vue 等流行组件库提供了现成的 TreeTable/TreeGrid 组件,可直接使用。 Ele…

vue递归实现

vue递归实现

vue递归实现方法 在Vue中实现递归组件通常用于树形结构、嵌套菜单等场景。以下是具体实现方式: 使用组件name属性递归 定义一个组件时,通过name属性让组件可以在自身模板中调用自己: <…