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

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.xdnf.cn/news/551809.html

相关文章:

  • PL/SQL 安装配置与使用
  • 《Python数学与科学计算完全指南:从基础运算到高级加密,解锁数据处理的核心技能!》
  • 手握消防设施操作员证,职业之路更宽广
  • C++ Pimpl(Pointer to Implementation)设计思想
  • AI 商业化部署中,ollama 和 vllm 的选型对比
  • 二叉树遍历--(前 中 后 层序)
  • 【lvgl9】使用keyboard和textarea实现密码数字输入界面
  • Git 克隆子分支
  • 本地ip如何映射到外网?借助端口映射软件把内网地址给别人用
  • Jetson Agx Orin平台JP5.1.4-R35.6.0版本VI recover导致内核崩溃问题(有官方patch)
  • uni-app项目从0-1基础架构搭建全流程
  • Nextcloud与Google就安卓文件访问权限展开博弈
  • 从代码学习深度学习 - 预训练word2vec PyTorch版
  • NebulaGraph学习笔记-SessionPool之Session not existed
  • 五、central cache的设计
  • 多环境回测模拟不同市场条件下的策略表现
  • CSS专题之常见布局
  • 设备全生命周期管理:从采购到报废的数字化闭环方案
  • Varlet UI-Material Design风格Vue 3框架移动端组件库
  • SUI批量转账几种方法介绍
  • 构建AI时代的大数据基础设施-MaxCompute多模态数据处理最佳实践
  • 人工智能+:职业价值的重构与技能升级
  • LSM Tree算法原理
  • [特殊字符]车牌识别相机,到底用在哪?
  • 芯片分享之AD976性能介绍
  • NVM 安装与配置指南
  • Python中使用CUDA/GPU的方式比较
  • GMSL:汽车里的音视频传输
  • Python 包管理工具uv依赖分组概念解析
  • 瑞莎星睿 O6 (Radxa Orion O6)-ubuntu24.04-ROS2 运行深度估计模型