Vue百日学习计划Day46-48天详细计划-Gemini版

Day 46: <KeepAlive> - 组件缓存与优化 (~3 小时)

  • 本日目标: 理解 <KeepAlive> 的作用,学会如何使用它来缓存组件实例,从而优化应用性能和用户体验。
  • 所需资源: Vue 3 官方文档 (<KeepAlive>): https://cn.vuejs.org/guide/built-ins/keep-alive.html

学习计划:

  • 番茄时钟 1 (25 分钟工作 + 5 分钟休息):

    • 内容: <KeepAlive> 简介及其目的。
    • 活动: 阅读官方文档中关于 <KeepAlive> 的介绍。理解为什么组件缓存是有益的,尤其是在频繁切换组件(如标签页界面)的场景中,它能帮助我们保持组件状态或避免昂贵的重新渲染。
    • 思考: <KeepAlive> 与简单地使用 v-if 来显示/隐藏组件有什么本质区别?
    • 休息: 短暂休息,放松一下。
  • 番茄时钟 2 (25 分钟工作 + 5 分钟休息):

    • 内容: <KeepAlive> 与动态组件的基础使用。
    • 活动: 设置一个简单的父组件,使用 <component :is="currentComponent"> 来切换两到三个简单的子组件(例如 ComponentA.vue, ComponentB.vue)。在不使用 <KeepAlive> 的情况下,观察它们在切换时的生命周期钩子 (onMounted, onUnmounted) 在控制台的输出。
    • 实践:<component :is="..."><KeepAlive> 包裹起来。再次观察控制台输出。注意 onUnmounted 不再在切换时被调用。
    • 休息: 快速调整状态。
  • 番茄时钟 3 (25 分钟工作 + 5 分钟休息):

    • 内容: include, exclude, max 属性。
    • 活动: 学习 includeexclude 属性,它们通过组件的 name 属性来控制哪些组件被缓存。理解 max 属性用于限制缓存的实例数量。
    • 实践: 修改你的 <KeepAlive> 配置,尝试使用 include(例如,只缓存 ComponentA)。然后尝试 exclude。如果你有多个组件,也可以实验一下 max
    • 休息: 短暂放松。
  • 番茄时钟 4 (25 分钟工作 + 5 分钟休息):

    • 内容: <KeepAlive> 相关的生命周期钩子 (onActivated, onDeactivated)。
    • 活动: 阅读 onActivatedonDeactivated 生命周期钩子的相关内容。理解这些钩子是专门为被 <KeepAlive> 包裹的组件设计的,并在缓存组件被激活/失活时触发。
    • 实践: 在你被缓存的子组件中添加 onActivatedonDeactivated 钩子,并在其中打印日志信息。切换组件时,观察控制台输出。
    • 休息: 补充水分。
  • 总结与回顾 (10-15 分钟):

    • 回顾 <KeepAlive> 的核心作用和用法。
    • 确保你理解 include, exclude, max 属性的工作方式。
    • 确认你理解了 onActivatedonDeactivated 钩子的执行时机。

Day 47: <Teleport> - 瞬移组件内容 (~3 小时)

  • 本日目标: 学习如何使用 <Teleport> 将组件的内容渲染到 DOM 树的不同位置,脱离组件自身的父子层级关系。
  • 所需资源: Vue 3 官方文档 (<Teleport>): https://cn.vuejs.org/guide/built-ins/teleport.html

学习计划:

  • 番茄时钟 1 (25 分钟工作 + 5 分钟休息):

    • 内容: <Teleport> 简介及其应用场景。
    • 活动: 阅读官方文档中关于 <Teleport> 的介绍。理解它在哪些场景下有用,比如模态框 (Modals)、通知 (Notifications) 或工具提示 (Tooltips),当你希望内容在视觉上位于其他所有内容之上(例如,直接在 <body> 标签下),但在逻辑上仍由其组件管理时。
    • 思考: 相较于常规的组件渲染方式,<Teleport> 解决了哪些问题?
    • 休息: 为接下来的实践做好准备。
  • 番茄时钟 2 (25 分钟工作 + 5 分钟休息):

    • 内容: <Teleport> 的基础使用。
    • 活动: 在你的 public/index.html 文件中,添加一个新的空 div 元素并为其指定一个 ID (例如,<div id="teleport-target"></div>)。
    • 实践: 创建一个简单的子组件 (MyModal.vue),包含一些内容。用 <Teleport to="#teleport-target"> 包裹其内容。在另一个组件(例如 App.vue)中渲染 MyModal.vue。观察在 DOM 结构中,MyModal 的内容是否出现在 #teleport-target 中,即使 MyModal 在逻辑上是 App.vue 的子组件。
    • 休息: 检查 DOM 结构以确认。
  • 番茄时钟 3 (25 分钟工作 + 5 分钟休息):

    • 内容: <Teleport> 与组件状态的结合。
    • 活动: 理解 <Teleport> 只移动渲染的 DOM 节点,而不改变组件的逻辑父子关系。组件仍然可以从其实际父组件接收 Props,并向其父组件发出事件。
    • 实践:App.vue 中添加一个响应式变量 (isOpen = ref(false)) 和一个按钮来切换 isOpen。使用 v-if="isOpen" 来条件性渲染 MyModal。在 MyModal 中添加依赖 App.vue 传入的 Props 的内容,或者发出事件回传给 App.vue。确认状态和事件处理仍然按预期工作。
    • 休息: 短暂放松。
  • 番茄时钟 4 (25 分钟工作 + 5 分钟休息):

    • 内容: 同一目标上的多个 <Teleport>disabled 属性。
    • 活动: 了解多个 <Teleport> 组件可以挂载到同一个目标元素,它们的内容将按顺序追加。理解 disabled 属性可以条件性地启用/禁用传送功能。
    • 实践: 创建两个不同的模态框组件,并将它们都传送到同一个目标。观察它们的渲染顺序。然后,给其中一个或两个添加 disabled 属性,并切换它,观察内容从目标元素中出现/消失。
    • 休息: 补充能量。
  • 总结与回顾 (10-15 分钟):

    • 总结 <Teleport> 的主要应用场景。
    • 确认你能成功将内容传送到不同的 DOM 位置,同时保持组件的逻辑。
    • 理解 disabled 属性以及多个 <Teleport> 如何在同一目标上协作。

Day 48: <Transition><TransitionGroup> - 动画与过渡 (~3 小时)

  • 本日目标: 学习如何使用 <Transition> 对单个元素/组件应用过渡效果,以及如何使用 <TransitionGroup> 对列表应用过渡效果,并通过 CSS 类来实现动画。
  • 所需资源:
    • Vue 3 官方文档 (<Transition>): https://cn.vuejs.org/guide/built-ins/transition.html
    • Vue 3 官方文档 (<TransitionGroup>): https://cn.vuejs.org/guide/built-ins/transition-group.html

学习计划:

  • 番茄时钟 1 (25 分钟工作 + 5 分钟休息):

    • 内容: <Transition> 简介与基础使用。
    • 活动: 阅读官方文档中关于 <Transition> 的内容。理解它用于对单个元素或组件应用进入/离开过渡。了解 Vue 会应用的六个过渡 CSS 类 (v-enter-from, v-enter-active, v-enter-to, v-leave-from, v-leave-active, v-leave-to)。
    • 实践: 创建一个简单的元素(例如,一个带有文本的 div),并使用 v-if 条件性渲染它。用 <Transition> 包裹这个元素。添加基本的 CSS 类(例如,v-enter-active, v-leave-active 带有 transition 属性),使其能实现淡入/淡出效果。
    • 休息: 离开屏幕,放松眼睛。
  • 番茄时钟 2 (25 分钟工作 + 5 分钟休息):

    • 内容: 自定义 <Transition> 类名与模式。
    • 活动: 学习如何通过 name 属性自定义过渡类名(例如,<Transition name="fade"> 会使用 fade-enter-active)。理解 mode 属性(in-out, out-in)用于管理同时进行的进入/离开过渡。
    • 实践: 给你的 <Transition> 添加一个 name 属性,并相应地更新你的 CSS 类。当在 <Transition> 内部使用 v-if/v-else 切换两个不同组件时,尝试使用 mode="out-in"
    • 休息: 快速的思维切换。
  • 番茄时钟 3 (25 分钟工作 + 5 分钟休息):

    • 内容: <TransitionGroup> 简介与列表过渡。
    • 活动: 阅读官方文档中关于 <TransitionGroup> 的内容。理解它专门用于对使用 v-for 渲染的元素列表应用进入/离开/移动过渡。注意它默认会渲染一个包装元素(<span>),除非你指定了 tag 属性。
    • 实践: 创建一个简单的项目列表(例如,一个字符串数组)。使用 v-for 渲染它们。添加按钮来向列表中添加/删除项目。
    • 休息: 准备进行更多编码。
  • 番茄时钟 4 (25 分钟工作 + 5 分钟休息):

    • 内容: <TransitionGroup> 的基础使用和 v-move 类。
    • 活动:<TransitionGroup> 包裹你的 v-for 列表。理解 v-move 类,它在列表项重新排序时应用,用于平滑的动画效果。
    • 实践: 为你的列表添加 v-enter-active, v-leave-active(用于新添加/删除的项目)和 v-move(用于重新排序的项目)的 CSS。当添加、删除或重新排序项目(例如通过排序数组)时,观察过渡效果。记住在 <TransitionGroup> 内部的 v-for 项中添加 :key
    • 休息: 深呼吸。
  • 总结与回顾 (10-15 分钟):

    • 总结 <Transition><TransitionGroup> 的区别和应用场景。
    • 确保你理解了相关的核心 CSS 类 (-enter-from, -enter-active, -enter-to, -leave-from, -leave-active, -leave-to, v-move)。
    • 思考这些内置组件如何通过添加视觉效果显著提升用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBean模块(三)具有生命周期管理能力的类(1)AutowireCapableBeanFactory

一、介绍 1、简介 AutowireCapableBeanFactory 是 Spring 框架中的一个接口&#xff0c;位于 org.springframework.beans.factory 包下&#xff0c;它提供了更底层的 Bean 实例化、依赖注入和生命周期管理能力&#xff0c;即使这些 Bean 没有通过常规的 Component 或 XML 注册…

Service Mesh

目录 一、Service Mesh 的核心特点 二、Service Mesh 的典型架构 1. Sidecar 模式 2. 控制平面与数据平面分离 三、Service Mesh 解决的核心问题 四、典型应用场景 五、主流 Service Mesh 框架对比 六、挑战与局限性 七、未来趋势 总结 Istio 一、Istio 核心组件与…

黑马Java基础笔记-13常用查找算法

查找算法 基本查找(也叫顺序查找&#xff0c;线性查找) 二分查找&#xff08;需要有序数据&#xff09; public static int binarySearch(int[] arr, int number){//1.定义两个变量记录要查找的范围int min 0;int max arr.length - 1;//2.利用循环不断的去找要查找的数据wh…

Go 语言 vs C+Lua(Skynet)游戏服务器方案对比分析

为啥挑这两个呢&#xff1f;因为两种技术分别对应CSP模型和Actor模型&#xff0c;都是经过时间检验的成熟且可靠的并发模型&#xff0c;问了很多地方&#xff0c;经过gpt整理得出如下报告。 从开发效率、运行性能、热更新扩展、云部署与水平扩展能力、多类型游戏支持等五个维度…

LeetCode 925. 长按键入 java题解

双指针。不会写。 https://leetcode.cn/problems/long-pressed-name/description/ class Solution {public boolean isLongPressedName(String name, String typed) {int len1name.length();int len2typed.length();int i0,j0;while(i<len1&&j<len2){if(name.ch…

如何使用通义灵码提高前端开发效率

工欲善其事&#xff0c;必先利其器。对于前端开发而言&#xff0c;使用VSCode已经能够极大地提高前端的开发效率了。但有了AI加持后&#xff0c;前端开发的效率又更上一层楼了&#xff01; 本文采用的AI是通义灵码插件提供的通义千问大模型&#xff0c;是目前AI性能榜第一梯队…

【小明剑魔视频Viggle AI模仿的核心算法组成】

Viggle AI 作为一款先进的生成式视频AI工具&#xff0c;其核心技术栈融合了多项前沿算法。以下是深度解析其核心算法架构及实现原理&#xff1a; 一、核心算法组成 1. 运动控制生成&#xff08;Motion Control Generation&#xff09; 算法框架&#xff1a;基于扩散模型&…

解决Power BI Desktop导入Excel数据第一行不是列标题问题

选中第一行不是列标题的表→鼠标右键→选择编辑查询→进入Power Query界面→点击“将第一行用作标题”→点击左边的“关闭并应用” 第一行就提升为标题了

对 Lambda 架构问题的深入理解

感谢 GPT&#xff0c;对很多问题的理解有机会更深。 大家攻击 Lambda 架构&#xff0c;常说的一个点就是 “实时离线指标存在差异”。“实时离线指标存在差异”&#xff0c;是一个真实困扰运营方的问题吗&#xff1f; 答案&#xff1a;是的&#xff0c;这是一个真实生活中的痛…

React中使用ahooks处理业务场景

// 从 ahooks 引入 useDynamicList 钩子函数&#xff0c;用于管理动态列表数据&#xff08;增删改&#xff09; import { useDynamicList } from ahooks;// 从 ant-design/icons 引入两个图标组件&#xff1a;减号圆圈图标和加号圆圈图标 import { MinusCircleOutlined, PlusCi…

蓝桥杯2114 李白打酒加强版

问题描述 话说大诗人李白, 一生好饮。幸好他从不开车。 一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱: 无事街上走&#xff0c;提显去打酒。 逢店加一倍, 遇花喝一斗。 这一路上, 他一共遇到店 N 次, 遇到花 M 次。已知最后一次遇到的是花, 他正好把酒喝光了。…

小土堆pytorch--神经网路-卷积层池化层

神经网路-卷积层&池化层 一级目录二级目录三级目录 1. 神经网路-卷积层2. 神经网路最大池化的应用 一级目录 二级目录 三级目录 1. 神经网路-卷积层 在PyTorch中&#xff0c;torch.nn.Conv2d函数定义了一个二维卷积层&#xff0c;其常用参数包括&#xff1a; in_channel…

C++显式声明explicit

C显示声明explicit 在 C 中&#xff0c;explicit 关键字用于修饰单参数构造函数或多参数构造函数&#xff08;C11 起&#xff09;&#xff0c;其核心作用是禁止编译器的隐式类型转换。 一、必须加 explicit 的典型场景 1. 单参数构造函数 当构造函数只有一个参数时&#xff…

【springboot】HttpClient快速入门

介绍 HttpClient 是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新的版本和建议 就是我们可以在java程序中使用HttpClient构造http请求&#xff0c;还可以发送h…

安全版4.5.8开启审计后,hac+读写分离主备切换异常

文章目录 环境BUG/漏洞编码症状触发条件解决方案 环境 系统平台&#xff1a;UOS &#xff08;飞腾&#xff09; 版本&#xff1a;4.5.8 BUG/漏洞编码 3043 症状 BUG安装包&#xff1a; hgdb-see-4.5.8-db43858.aarch64.rpm 异常&#xff1a;hac集群一主两备环境&#xff…

企业级 Go 多版本环境部署指南-Ubuntu CentOS Rocky全兼容实践20250520

&#x1f6e0;️ 企业级 Go 多版本环境部署指南-Ubuntu / CentOS / Rocky 全兼容实践 兼顾 多版本管理、安全合规、最小权限原则与 CI/CD 可复现性&#xff0c;本指南以 Go 官方 toolchain 为主&#xff0c;结合 asdf 实现跨语言统一管理&#xff0c;并剔除已过时的 GVM。支持 …

Linux 的 TCP 网络编程 -- 回显服务器,翻译服务器

目录 1. 相关函数介绍 1.1 listen() 1.2 accept() 1.3 connect() 2. TCP 回显服务器 2.1 Common.hpp 2.2 InetAddr.hpp 2.3 TcpClient.cc 2.4 TcpServer.hpp 2.5 TcpServer.cc 2.6 demo 测试 3. TCP 翻译服务器 3.1 demo 测试 1. 相关函数介绍 其中一些函数在之前…

Unity3D仿星露谷物语开发46之种植/砍伐橡树

1、目标 种植一棵橡树&#xff0c;从种子变成大树。 然后可以使用斧头砍伐橡树。 2、删除totalGrowthDays字段 修改growthDays的含义&#xff0c;定义每个值为到达当前阶段的累加天数。此时最后一个阶段就是totalGrowthDays的含义。所以就可以删除totalGrowthDays字段。 &…

容器化-K8s-镜像仓库使用和应用

一、K8s 镜像仓库使用 1、启动镜像仓库 cd/usr/local/harbor ./install.sh2、配置镜像仓库地址 在 master 节点和 slaver 节点上,需要配置 Docker 的镜像仓库地址,以便能够访问本地的镜像仓库。编辑 Docker 的配置文件 vi /etc/docker/daemon.json(如果不存在则创建),添…

塔式服务器都有哪些重要功能?

塔式服务器作为一种拥有着独特立式设计的服务器&#xff0c;能够帮助企业节省一定的放置空间&#xff0c;提供一系列的功能和优势&#xff0c;可以运用在多种应用场景当中&#xff0c;下面将探讨一下塔式服务器的主要功能都有哪些&#xff1f; 塔式服务器可以支持基本的应用程序…