当前位置: 首页 > wzjs >正文

青岛建网站多少钱网上怎么发布广告

青岛建网站多少钱,网上怎么发布广告,搜索引擎优化排名seo,html网页模板网站KeepAlive 是 Vue 组件中的一个重要功能,主要用于缓存组件,以提升性能和用户体验。 目录 一、KeepAlive 基本概念二、KeepAlive 的核心原理三、KeepAlive 关键属性解析1. include:指定需要缓存的组件2. exclude:指定不需要缓存的组…

KeepAlive 是 Vue 组件中的一个重要功能,主要用于缓存组件,以提升性能和用户体验。

在这里插入图片描述

目录

      • 一、`KeepAlive` 基本概念
      • 二、`KeepAlive` 的核心原理
      • 三、`KeepAlive` 关键属性解析
        • 1. `include`:指定需要缓存的组件
        • 2. `exclude`:指定不需要缓存的组件
        • 3. `max`:最大缓存组件数
      • 四、`KeepAlive` 生命周期
      • 五、具体使用场景
      • 六、常见问题及解决方案
        • 1. **`activated` 和 `deactivated` 不触发**
        • 2. **`keep-alive` 组件缓存过多导致内存占用**
        • 3. **如何手动清除缓存**
        • 4. **如何手动清除 `keep-alive` 缓存**
      • 七、完整示例:结合 Vue Router
      • 八、总结


在这里插入图片描述

一、KeepAlive 基本概念

KeepAlive 是 Vue 内置的一个抽象组件,通常用于包裹动态组件,使其在切换时保持状态,而不是被销毁和重新创建。

主要作用:

  1. 缓存组件,避免重复创建和销毁,提升性能。
  2. 保持组件状态,例如表单填写、用户滚动位置等不会丢失。
  3. 适用于router-viewcomponent动态组件

基础使用示例:

<template><keep-alive><component :is="currentView"></component></keep-alive>
</template><script>
import A from "./A.vue";
import B from "./B.vue";export default {data() {return {currentView: "A"};},components: { A, B }
};
</script>

在上述代码中,<component :is="currentView">会根据currentView的值动态切换组件,但由于keep-alive的存在,被切换出去的组件不会被销毁,而是被缓存。


二、KeepAlive 的核心原理

  1. 组件挂载与缓存

    • Vue 在创建组件时,会判断是否被 KeepAlive 包裹,如果是,则不会销毁,而是将其存储在 cache 对象中。
    • 当组件被切换回来时,会从 cache 取出,而不会重新创建实例。
  2. 缓存管理

    • KeepAlive 组件通过 includeexclude 规则控制哪些组件需要缓存,哪些不需要。
  3. 生命周期钩子

    • activated():组件被缓存后激活时触发。
    • deactivated():组件被缓存但切换出去时触发。

三、KeepAlive 关键属性解析

1. include:指定需要缓存的组件

可以是字符串、正则表达式或数组:

<keep-alive :include="['A', 'B']"><router-view></router-view>
</keep-alive>

这样只有 AB 组件会被缓存。

2. exclude:指定不需要缓存的组件
<keep-alive :exclude="/^Temp/"><router-view></router-view>
</keep-alive>

所有以 Temp 开头的组件都不会被缓存。

3. max:最大缓存组件数
<keep-alive :max="2"><router-view></router-view>
</keep-alive>

最多缓存 2 个组件,超过后会删除最久未使用的组件。


四、KeepAlive 生命周期

组件被 keep-alive 缓存时,不会触发 createdmounted,但会触发以下钩子:

  1. activated():组件从缓存中激活
  2. deactivated():组件被缓存但未销毁

示例:

<script>
export default {created() {console.log("组件创建");},mounted() {console.log("组件挂载");},activated() {console.log("组件被激活");},deactivated() {console.log("组件被缓存");}
};
</script>

生命周期触发顺序

  • 首次进入createdmountedactivated
  • 切换离开deactivated
  • 再次进入activated

五、具体使用场景

  1. 配合 router-view,缓存某些路由

    <keep-alive><router-view></router-view>
    </keep-alive>
    
    • 这样切换路由时,已访问的组件会被缓存。
  2. 结合 include 指定缓存页面

    <keep-alive :include="['Home', 'Profile']"><router-view></router-view>
    </keep-alive>
    
    • 只有 HomeProfile 页面会被缓存。
  3. 结合 exclude 过滤不需要缓存的页面

    <keep-alive :exclude="['Login']"><router-view></router-view>
    </keep-alive>
    
    • Login 页面不会被缓存,其他页面都会缓存。
  4. 动态组件缓存

    <keep-alive><component :is="currentComponent"></component>
    </keep-alive>
    
    • 切换组件时不会销毁原组件。

六、常见问题及解决方案

1. activateddeactivated 不触发
  • 确保组件确实被 keep-alive 包裹,并且是动态组件。
2. keep-alive 组件缓存过多导致内存占用
  • 使用 max 限制缓存数:
    <keep-alive :max="3"><router-view></router-view>
    </keep-alive>
    
3. 如何手动清除缓存
this.$destroy(); // 清除当前组件缓存

或者

this.$parent.$forceUpdate(); // 强制更新
4. 如何手动清除 keep-alive 缓存

可以使用 key 强制重新渲染:

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

每次切换 currentKey,都会重新渲染组件。


七、完整示例:结合 Vue Router

<template><div><button @click="currentView = 'Home'">Home</button><button @click="currentView = 'About'">About</button><keep-alive><component :is="currentView"></component></keep-alive></div>
</template><script>
import Home from "./Home.vue";
import About from "./About.vue";export default {data() {return {currentView: "Home"};},components: { Home, About }
};
</script>

在这里:

  • HomeAbout 组件可以自由切换,并且会被 keep-alive 缓存。

八、总结

  1. KeepAlive 主要用于缓存动态组件,避免重复创建和销毁,提高性能。
  2. 关键属性:
    • include 指定缓存组件。
    • exclude 排除不需要缓存的组件。
    • max 限制最大缓存数。
  3. 组件生命周期:
    • activated() 组件被激活
    • deactivated() 组件被缓存
  4. 适用于 router-viewcomponent 组件,适合缓存列表、表单、复杂页面状态。

如果在项目中正确使用 KeepAlive,可以大幅提升前端性能,避免页面状态丢失,提高用户体验。

http://www.dtcms.com/wzjs/228606.html

相关文章:

  • 微商营销北京seo代理计费
  • 上海专业网站建设价格徐州seo排名公司
  • 买卖平台有哪些网站阿里巴巴数据分析官网
  • 网站建设合同违约日本shopify独立站
  • 建设银行企业网上银行网站打不开长沙网站排名推广
  • 网站建设的素材软文发布
  • 集团门户网站建设费用114网址大全
  • 昆明企业网站制作抖来查关键词搜索排名
  • 是做网站好还是做游戏好福建seo关键词优化外包
  • 网站开发助理是什么所有代刷平台推广
  • 广州网站建设怎么样导购网站怎么推广
  • 集团公司网站建设游戏优化大师官方下载
  • 柳州网站开发郑州seo顾问
  • 湖州网站开发网站怎么开发
  • 帝国企业网站源码seo网站有优化培训班吗
  • 网站的排名就是友情链接seo人员招聘
  • 万网购买网站网络广告的计费方式
  • 网站开发公司比较有名学前端去哪个培训机构
  • 政府网站建设重要意义网络销售工作靠谱吗
  • 番禺招聘网最新信息seo优化方法有哪些
  • 仿牌网站流量无锡百度推广公司哪家好
  • 自己网站做访问统计代码拉新十大推广app平台
  • wordpress站长地图百度seo刷排名工具
  • wordpress bliss廊坊首页霸屏排名优化
  • 网站如何做移动网站最佳磁力吧ciliba
  • 可以做长页海报的网站网址域名大全
  • 长沙 网站建设实时疫情最新消息数据
  • 男人女人做那个网站百度关键词优化推广
  • 24 手表网站百度指数热度榜
  • 资产管理公司网站建设费用怎么入账软文怎么写比较吸引人