当前位置:首页 > 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 属性控制哪些组件需要缓存。支持字符串、正则表达式或数组:

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

生命周期钩子

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

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

结合路由的 meta 配置

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

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),当组件切换时:

vue keep alive实现

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

标签: vuekeep
分享给朋友:

相关文章

vue实现前端分离

vue实现前端分离

Vue 实现前后端分离 前后端分离是一种架构模式,前端负责页面渲染和交互逻辑,后端提供数据接口。Vue.js 作为前端框架,非常适合实现前后端分离的开发模式。 核心实现步骤 创建 Vue 项目 使用…

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生改…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…

vue实现webapp

vue实现webapp

Vue 实现 WebApp 的基本步骤 环境准备 确保已安装 Node.js 和 npm/yarn。通过 Vue CLI 或 Vite 创建项目: npm install -g @vue/cli v…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…