当前位置:首页 > VUE

vue keep alive 实现

2026-01-16 05:59:00VUE

Vue Keep-Alive 实现

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

基本用法

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

keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

结合路由使用

在 Vue Router 中,可以通过 keep-alive 缓存路由组件:

vue keep alive 实现

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

缓存特定组件

通过 includeexclude 属性指定需要缓存或排除的组件:

<keep-alive include="ComponentA,ComponentB">
  <component :is="currentComponent"></component>
</keep-alive>
  • include:匹配组件名称(字符串或正则),仅缓存匹配的组件。
  • exclude:排除匹配的组件,不缓存。

生命周期钩子

被缓存的组件会触发特定的生命周期钩子:

vue keep alive 实现

  • activated:组件被激活时调用(从缓存中重新显示)。
  • deactivated:组件被停用时调用(进入缓存)。
export default {
  activated() {
    console.log('Component activated');
  },
  deactivated() {
    console.log('Component deactivated');
  }
};

实现原理

keep-alive 的核心原理是通过 Vue 的抽象组件机制:

  1. created 钩子中初始化缓存对象 this.cache 和键名数组 this.keys
  2. render 阶段,通过 vnode.key 或组件名称生成唯一标识,检查缓存中是否存在该组件。
  3. 若存在,直接返回缓存的实例;否则缓存当前组件实例。
  4. 通过 max 属性限制缓存数量,超出时清除最久未使用的缓存。

自定义缓存策略

可以通过 cache 属性自定义缓存逻辑:

const customCache = {
  get(key) {
    // 自定义获取逻辑
  },
  set(key, vnode) {
    // 自定义存储逻辑
  }
};

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

注意事项

  • 被缓存的组件需设置唯一的 name 选项,否则 include/exclude 可能不生效。
  • 频繁切换的组件适合缓存,但需注意内存占用问题。
  • 通过 max 属性限制缓存数量,避免内存泄漏:
<keep-alive max="5">
  <router-view></router-view>
</keep-alive>

标签: vuekeep
分享给朋友:

相关文章

vue实现皮肤切换

vue实现皮肤切换

实现皮肤切换的基本思路 在Vue中实现皮肤切换功能,通常涉及动态修改CSS变量或类名。核心是通过状态管理当前主题,并在组件中应用对应的样式。 使用CSS变量实现主题切换 CSS变量(自定义属性)是实…

vue 页签实现

vue 页签实现

Vue 页签实现方法 在 Vue 中实现页签功能通常涉及动态组件、路由或状态管理。以下是几种常见的实现方式: 使用动态组件 通过 Vue 的 <component> 动态组件结合 v-f…

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框…

实现 vue ssr

实现 vue ssr

Vue SSR 实现方法 Vue SSR(Server-Side Rendering)通过服务器端渲染 Vue 应用,提升首屏加载速度和 SEO 友好性。以下是核心实现方法: 基础配置 安装必要依赖…

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project…

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…