当前位置:首页 > VUE

vue keep alive 实现

2026-03-29 06:29:02VUE

Vue Keep-Alive 实现原理

Vue 的 keep-alive 是一个内置组件,用于缓存不活动的组件实例,避免重复渲染和销毁。其核心实现基于组件的生命周期钩子和虚拟 DOM 的缓存机制。

基本用法

在 Vue 模板中包裹需要缓存的动态组件或路由视图:

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

或配合路由使用:

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

缓存机制

keep-alive 通过以下方式实现缓存:

  1. LRU 缓存策略:默认缓存最近使用的组件实例,超出 max 限制时会销毁最久未使用的实例。
  2. 虚拟 DOM 比对:通过 key 标识缓存组件,相同 key 的组件会直接复用缓存实例。
  3. 生命周期管理:被缓存的组件会触发 activateddeactivated 钩子而非 destroyed

核心属性

  • include:字符串或正则,匹配名称的组件会被缓存。
  • exclude:字符串或正则,匹配名称的组件不会被缓存。
  • max:数字,限制最大缓存实例数。

示例:

<keep-alive :include="['ComponentA']" :max="5">
  <router-view/>
</keep-alive>

实现自定义缓存

可通过 cache 属性扩展缓存策略:

const customCache = {
  get(key) { /* ... */ },
  set(key, vnode) { /* ... */ },
  delete(key) { /* ... */ }
};

<keep-alive :cache="customCache">
  <component :is="view"/>
</keep-alive>

注意事项

  • 被缓存的组件需设置唯一 name 选项,否则 include/exclude 不生效。
  • 嵌套路由需要每个层级单独配置 keep-alive
  • 频繁切换的缓存组件可能引发内存问题,需合理设置 max

源码关键逻辑

Vue 内部通过 render 函数处理缓存:

vue keep alive 实现

render () {
  const vnode = getFirstComponentChild(this.$slots.default);
  const key = vnode.key;
  if (cache[key]) {
    vnode.componentInstance = cache[key].componentInstance;
  } else {
    cache[key] = vnode;
  }
  vnode.data.keepAlive = true;
  return vnode;
}

此实现确保了组件实例的复用而非重新创建。

标签: vuekeep
分享给朋友:

相关文章

vue实现用户信息删除

vue实现用户信息删除

Vue 实现用户信息删除功能 在 Vue 中实现用户信息删除功能通常涉及前端界面交互和后端 API 调用。以下是实现步骤: 前端界面设计 创建删除按钮或操作项,通常使用 @click 事件触发删除操…

vue实现单点

vue实现单点

Vue 实现单点登录(SSO)方案 单点登录(SSO)允许用户在多个相关但独立的系统中使用同一组凭证登录。以下是基于 Vue 的实现方案: 基于 OAuth2/OpenID Connect 的实现…

vue实现iframe

vue实现iframe

Vue 中实现 iframe 的方法 在 Vue 项目中,可以通过多种方式实现 iframe 的嵌入。以下是几种常见的方法: 使用原生 HTML iframe 标签 直接在 Vue 组件的模板中使用…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容器组…

vue mvvm 实现

vue mvvm 实现

Vue MVVM 实现原理 Vue.js 的 MVVM(Model-View-ViewModel)架构通过数据绑定和响应式系统实现视图与数据的自动同步。以下是其核心实现机制: 数据劫持与响应式系统…