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

Vue百日学习计划Day33-35天详细计划-Gemini版

总目标: 在 Day 33-35 理解 Vue 组件从创建到销毁的完整生命周期,熟练掌握 Composition API 中主要的生命周期钩子,并知道在不同阶段执行哪些操作。

  • 所需资源:
    • Vue 3 官方文档 (生命周期钩子): https://cn.vuejs.org/guide/essentials/lifecycle.html
    • 你的 Vue 3 实践项目。

Day 33: 生命周期钩子 - 创建与挂载阶段 (~3 小时)

  • 本日目标: 理解组件生命周期的概念,学习 Composition API 中创建和挂载阶段的钩子 (onBeforeMount, onMounted)。

  • 学习计划:

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

      • 内容: 组件生命周期是什么?
      • 活动: 阅读官方文档“生命周期钩子”部分的引言,理解组件从创建、挂载到 DOM、更新、最终销毁的各个阶段。理解生命周期钩子允许我们在特定阶段执行自定义逻辑。
      • 思考: 为什么我们需要在组件生命周期的特定时刻执行代码?
      • 休息: 短暂休息。
    • 番茄时钟 2 (25 分钟工作 + 5 分钟休息):

      • 内容: onBeforeMount 钩子。
      • 活动: 阅读官方文档关于 onBeforeMount 的内容。理解此钩子在组件被挂载到 DOM 之前执行。此时模板已经编译,但尚未创建真实的 DOM 节点。你可以访问组件的状态,但无法访问 DOM 元素。
      • 实践: 在你的实践项目组件中使用 <script setup> 导入 onBeforeMount,并在其中添加一个 console.log('onBeforeMount')
      • 休息: 短暂休息。
    • 番茄时钟 3 (25 分钟工作 + 5 分钟休息):

      • 内容: onMounted 钩子。
      • 活动: 阅读官方文档关于 onMounted 的内容。理解此钩子在组件被挂载到 DOM 之后执行。此时组件的 DOM 节点已经被创建并插入到文档中,你可以访问真实的 DOM 元素。这是执行需要访问 DOM、发送网络请求、订阅外部事件等的理想位置。
      • 实践: 导入 onMounted,添加 console.log('onMounted')。在 onMounted 中尝试使用 document.getElementByIdref 获取组件模板中的某个元素并打印它。
      • 休息: 短暂休息。
    • 番茄时钟 4 (25 分钟工作 + 5 分钟休息):

      • 内容: 实践:观察创建与挂载顺序。
      • 活动: 同时在 <script setup> 顶层(setup 代码本身)、onBeforeMountonMounted 中添加不同的 console.log 语句。在浏览器中查看控制台输出,观察它们的执行顺序。多次刷新页面,确保理解每次挂载时的顺序。
      • 思考: setup 代码、onBeforeMountonMounted 的执行顺序是怎样的?为什么是这个顺序?
      • 休息: 短暂休息。
    • 总结与回顾 (10-15 分钟):

      • 回顾组件创建和挂载阶段的钩子 (onBeforeMount, onMounted)。
      • 确认理解它们执行的时机以及各自适合执行的操作(能否访问 DOM)。
      • 确保实践代码能够清晰展示钩子的执行顺序。

Day 34: 生命周期钩子 - 更新与卸载阶段 (~3.5 小时)

  • 本日目标: 学习组件更新和卸载阶段的钩子 (onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted)。

  • 所需资源: Vue 3 官方文档 (生命周期钩子): https://cn.vuejs.org/guide/essentials/lifecycle.html

  • 学习计划:

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

      • 内容: onBeforeUpdate 钩子。
      • 活动: 阅读官方文档关于 onBeforeUpdate 的内容。理解此钩子在响应式数据发生变化,组件即将重新渲染到 DOM 之前执行。你可以在此访问更新前的 DOM 状态。
      • 实践: 在组件中添加一个响应式变量(如计数器),添加 onBeforeUpdate 钩子,并打印 console.log('onBeforeUpdate') 以及更新前的 DOM 内容(如果可以获取到)。
      • 休息: 短暂休息。
    • 番茄时钟 2 (25 分钟工作 + 5 分钟休息):

      • 内容: onUpdated 钩子。
      • 活动: 阅读官方文档关于 onUpdated 的内容。理解此钩子在响应式数据变化,组件重新渲染并更新到 DOM 之后执行。此时可以访问更新后的 DOM 状态。
      • 实践: 添加 onUpdated 钩子,并打印 console.log('onUpdated') 以及更新后的 DOM 内容。通过修改响应式变量,观察 onBeforeUpdateonUpdated 的执行顺序。
      • 休息: 短暂休息。
    • 番茄时钟 3 (25 分钟工作 + 5 分钟休息):

      • 内容: 实践:观察更新顺序。
      • 活动: 结合 Day 33 的 onMounted,修改组件的响应式数据(例如点击按钮使计数器增加)。观察控制台中 onMounted, onBeforeUpdate, onUpdated 的执行顺序。多次修改数据,观察更新钩子的重复执行。
      • 思考: 为什么更新钩子会在每次数据改变并触发渲染时执行?
      • 休息: 短暂休息。
    • 番茄时钟 4 (25 分钟工作 + 5 分钟休息):

      • 内容: onBeforeUnmount 钩子。
      • 活动: 阅读官方文档关于 onBeforeUnmount 的内容。理解此钩子在组件实例被销毁 之前执行。此时组件仍然完全可用,你可以进行一些清理工作,例如停止定时器、取消网络请求、移除事件监听器等。
      • 实践: 添加 onBeforeUnmount 钩子,并打印 console.log('onBeforeUnmount')。设置一个假的定时器,并计划在 onBeforeUnmount 中清除它。
      • 休息: 短暂休息。
    • 番茄时钟 5 (25 分钟工作 + 5 分钟休息):

      • 内容: onUnmounted 钩子。
      • 活动: 阅读官方文档关于 onUnmounted 的内容。理解此钩子在组件实例被销毁 之后执行。此时组件的 DOM 节点已经被从文档中移除。这是进行最后清理的阶段。
      • 实践: 添加 onUnmounted 钩子,并打印 console.log('onUnmounted')
      • 休息: 短暂休息。
    • 番茄时钟 6 (25 分钟工作 + 5 分钟休息):

      • 内容: 实践:观察卸载顺序与清理。
      • 活动: 创建一个父组件,使用 v-if 控制子组件的显示与隐藏。在子组件中添加所有学过的钩子日志。通过切换 v-if 的条件,使子组件被销毁,观察控制台中卸载钩子 (onBeforeUnmount, onUnmounted) 的执行顺序。确保在 onBeforeUnmountonUnmounted 中清除了 Day 33 onMounted 中设置的任何监听或 Day 34 设置的定时器。
      • 思考: 清理工作为什么重要?为什么要在卸载阶段进行?
      • 休息: 短短休息。
    • 总结与回顾 (10-15 分钟):

      • 回顾更新和卸载阶段的钩子及其执行时机。
      • 巩固清理工作的重要性以及在 onBeforeUnmount 中进行清理的常见场景。
      • 确保通过实践理解了组件的完整生命周期流程。

Day 35: 生命周期钩子 - 对比与其他钩子 (~3 小时)

  • 本日目标: 对比 Composition API 和 Options API 的生命周期钩子,了解其他一些不常用的钩子。

  • 所需资源: Vue 3 官方文档 (生命周期钩子): https://cn.vuejs.org/guide/essentials/lifecycle.html

  • 学习计划:

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

      • 内容: Composition API vs Options API 生命周期钩子对比 (创建/挂载)。
      • 活动: 阅读官方文档中关于钩子对比的部分。对比 setup vs beforeCreate/createdonBeforeMount vs beforeMountonMounted vs mounted。理解在 Composition API 中,setup 函数取代了 beforeCreatecreated 的功能。
      • 思考:<script setup> 中,代码是在哪个 Options API 钩子之前/之后执行?
      • 休息: 短暂休息。
    • 番茄时钟 2 (25 分钟工作 + 5 分钟休息):

      • 内容: Composition API vs Options API 生命周期钩子对比 (更新/卸载)。
      • 活动: 对比 onBeforeUpdate vs beforeUpdateonUpdated vs updatedonBeforeUnmount vs beforeUnmountonUnmounted vs unmounted。理解它们之间的对应关系是一对一的,只是名称和用法不同。
      • 思考: 如果一个组件同时使用了 Options API 和 Composition API 的钩子,它们的执行顺序是怎样的?(Options API 的同名钩子会先于 Composition API 的钩子执行,但通常不建议混用)。
      • 休息: 短暂休息。
    • 番茄时钟 3 (25 分钟工作 + 5 分钟休息):

      • 内容: onActivatedonDeactivated 钩子。
      • 活动: 阅读官方文档关于这两个钩子的内容。理解它们用于配合 <KeepAlive> 组件,当组件被激活(从缓存中显示)或失活(被缓存)时触发。
      • 思考: <KeepAlive> 组件有什么作用?为什么它需要 onActivatedonDeactivated
      • 休息: 短暂休息。
    • 番茄时钟 4 (25 分钟工作 + 5 分钟休息):

      • 内容: onErrorCaptured 钩子。
      • 活动: 阅读官方文档关于 onErrorCaptured 的内容。理解此钩子用于捕获来自后代组件的错误。
      • 思考: 这个钩子主要用于什么场景?(错误边界、统一错误处理)。
      • 休息: 短暂休息。
    • 番茄时钟 5 (25 分钟工作 + 5 分钟休息):

      • 内容: onRenderTrackedonRenderTriggered 钩子 (了解)。
      • 活动: 阅读官方文档关于这两个钩子的内容。理解它们是用于调试响应式渲染的高级钩子,可以告诉你是什么依赖被追踪了(Tracked)或是什么依赖触发了重新渲染(Triggered)。作为初学者,了解它们的存在和用途即可。
      • 实践: (可选) 在开发环境中尝试使用这两个钩子,触发一些响应式更新,观察控制台输出,加深理解响应式是如何工作的。
      • 休息: 短暂休息。
    • 总结与实践 (10-15 分钟):

      • 完整回顾 Composition API 和 Options API 的生命周期钩子对应关系。
      • 总结所有学过的 Composition API 钩子及其适用场景。
      • 思考在实际项目中,你会如何在 onMounted 中获取数据,在 onBeforeUnmount 中清理资源,以及何时可能用到 onActivatedonErrorCaptured

掌握检查:

  • 在 Day 35 结束时,你应该能够:
    • 说出 Vue 组件的主要生命周期阶段(创建、挂载、更新、卸载)。
    • 准确说出 onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted 这六个核心钩子在何时执行。
    • 知道在 onMounted 中可以安全地访问 DOM 并进行异步操作。
    • 知道在 onBeforeUnmount 中进行清理工作的重要性。
    • 了解 Composition API 的钩子与 Options API 的钩子之间的对应关系。
    • 知道 onActivatedonDeactivated 用于 <KeepAlive>onErrorCaptured 用于错误捕获。
    • 能够在你的实践项目中,在合适的生命周期钩子中添加代码来执行特定任务。

相关文章:

Vue百日学习计划Day33-35天详细计划-Gemini版

总目标: 在 Day 33-35 理解 Vue 组件从创建到销毁的完整生命周期&#xff0c;熟练掌握 Composition API 中主要的生命周期钩子&#xff0c;并知道在不同阶段执行哪些操作。 所需资源: Vue 3 官方文档 (生命周期钩子): https://cn.vuejs.org/guide/essentials/lifecycle.html你…...

Linux(2)——shell原理及Linux中的权限

目录 一、shell的运行原理 二、Linux中权限的问题 1.权限的概念 2.如何进行用户的切换 1&#xff09;从普通用户切到超级用户 2&#xff09;从root用户切到普通用户 3.如何实现提权操作 4.如何将普通用户添加到信用列表&#xff08;sudoers&#xff09; ​编辑5.Lin…...

如何在线免费压缩PDF文档?

PDF文件太大&#xff0c;通常是因为内部嵌入字体和图片。怎么才能将文件大小减减肥呢&#xff0c;主要有降低图片清晰度和去除相关字体两个方向来实现文档效果。接下来介绍三个免费压缩PDF实用工具。 &#xff08;一&#xff09;iLoveOFD在线转换工具 iLoveOFD在线转换工具&a…...

EasyExcel动态表头

专家官方解答 &#xff1a; 在使用EasyExcel处理Excel动态表头的问题时&#xff0c;官方并不推荐使用includecolumnfieldnames方法。根据提供的知识内容&#xff0c;以下是如何实现动态表头的详细步骤和解释&#xff1a; 原因分析 动态表头的需求通常来源于希望根据用户的选…...

汽车装配又又又升级,ethernetip转profinet进阶跃迁指南

1. 场景描述&#xff1a;汽车装配线中&#xff0c;使用EtherNet/IP协议的机器人与使用PROFINET协议的PLC进行数据交互。 2. 连接设备&#xff1a;EtherNet/IP机器人控制器&#xff08;如ABB、FANUC&#xff09;与PROFINET PLC&#xff08;如西门子S7-1500&#xff09;。 3. 连…...

css:无限滚动波浪线

以上是需要实现的效果&#xff0c;一条无限滚动波浪线&#xff0c;可以用来做区块的分割线。 要形成上下交替的圆形&#xff0c;思路是给div加圆角边框&#xff0c;第一个只有上边框&#xff0c;第二个只有下边框。 循环了100个div&#xff0c;这个数量根据自己容器宽度调整&…...

显示器无法接受键盘/鼠标问题解决

我们将键盘、鼠标的u盘插到显示器上后&#xff0c;仍然无法通过键盘和鼠标操控显示器是因为我们的显示器和笔记本/主机之间的连接只有一个typec对typec&#xff0c;无法满足信号传输 我们需要一根上行线&#xff1a;一头 typec/usb 接到主机/笔记本&#xff0c;然后另一头是 m…...

w~自动驾驶~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/13269720 #FastOcc 推理更快、部署友好Occ算法来啦&#xff01; 在自动驾驶系统当中&#xff0c;感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素&…...

<C++> MFC自动关闭对话框(MessageBoxTimeout)

MFC自动关闭对话框&#xff08;MessageBoxTimeout&#xff09; 记录一下今天在界面开发中的解决方案。自动关闭对话框有两种方案&#xff1a; 1.使用定时器实现延迟关闭&#xff08;DeepSeek方案&#xff09; 提示框显示几秒后自动关闭&#xff0c;可以使用 SetTimer KillT…...

山东大学计算机图形学期末复习整理5——CG10上

CG10上 Frenet-Serret框架 空间中一条曲线可以写成参数形式&#xff1a; C ( u ) ( x ( u ) , y ( u ) , z ( u ) ) \mathbf{C}(u) (x(u), y(u), z(u)) C(u)(x(u),y(u),z(u)) 这表示&#xff1a;当参数 u u u 变化时&#xff0c;曲线在三维空间中移动&#xff0c;生成一条轨…...

STM32移植LVGL8.3 (保姆级图文教程)

目录 前言设备清单2.8寸TFT-LCD屏原理与应用1️⃣基本参数2️⃣引脚说明3️⃣程序移植4️⃣硬件接线 LVGL8.3 移植流程1️⃣硬件及平台要求2️⃣版本说明3️⃣源码下载4️⃣源码移植 工程配置修改配置文件1️⃣lvgl_config.h2️⃣适配屏幕驱动3️⃣配置输入设备(触摸功能) 提供…...

AT 指令详解:基于 MCU 的通信控制实战指南AT 指令详解

在 MCU&#xff08;单片机&#xff09;项目中&#xff0c;我们经常需要与各种通信模组&#xff08;GSM、Wi-Fi、蓝牙等&#xff09;交互。而这类模组通常都通过串口&#xff08;UART&#xff09;与 MCU 通信&#xff0c;控制它们的“语言”就是——AT 指令。 一、什么是 AT 指…...

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系

虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Default Pawn与GamMode、Camera的关系1.Default Pawn与Camera的关系1.1. Default Pawn 是什么&#xff1f;1.2. Default Pawn 的主要组件1.3. Default…...

C++多态的详细讲解

【本节目标】 1. 多态的概念 2. 多态的定义及实现 3. 抽象类 4. 多态的原理 5. 单继承和多继承关系中的虚函数表 前言 需要声明的&#xff0c;本博客中的代码及解释都是在 vs2013 下的 x86 程序中&#xff0c;涉及的指针都是 4bytes 。 如果要其他平台下&#xff0c;部…...

vue项目启动报错

vue项目启动报错 一、问题二、解决 一、问题 从vue2更换到vue3之后&#xff0c;需要将node进行版本升级&#xff0c;之后启动项目出现了下面的问题。 Uncaught Error: A route named “PageNotFound” has been added as a child of a route with the same name. Route names …...

项目删除了,为什么vscode中的git还是存在未提交记录,应该怎么删除掉

Git的本地仓库&#xff08;.git文件夹&#xff09;可能仍然存在&#xff0c;即使项目文件已删除VSCode可能缓存了之前的Git状态Git的索引未被正确清理 解决方法&#xff1a; 彻底删除仓库&#xff1a; 确保完全删除项目文件夹及其中的.git目录或者在终端中执行 rm -rf .git&am…...

免费私有化部署! PawSQL社区版,超越EverSQL的企业级SQL优化工具面向个人开发者开放使用了

1. 概览 1.1 快速了解 PawSQL PawSQL是专注于数据库性能优化的企业级工具&#xff0c;解决方案覆盖SQL开发、测试、运维的整个流程&#xff0c;提供智能SQL审核、查询重写优化及自动化巡检功能&#xff0c;支持MySQL、PostgreSQL、Oracle、SQL Server等主流数据库及达梦、金仓…...

SecureCRT 使用指南:安装、设置与高效操作

目录 一、SecureCRT 简介 1.1 什么是 SecureCRT&#xff1f; 1.2 核心功能亮点 1.3 软件特点 二、SecureCRT 安装与激活 2.1 安装步骤&#xff08;Windows 系统&#xff09; 2.2 激活与破解&#xff08;仅供学习参考&#xff09; 三、基础配置与优化 3.1 界面与编码设…...

Tomcat多应用部署与静态资源路径问题全解指南

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…...

web常见的攻击方式

web攻击&#xff08;webAttack&#xff09;是针对用户上网行为或网站服务器等设备进行攻击的行为&#xff0c;如植入恶意代码、修改网站权限、获取网站用户隐私等等&#xff0c;即使是代码在的很小的bug也有可能导致隐私信息被泄漏&#xff0c;站点安全就是保护站点不受未授权的…...

【微信小程序 + 高德地图API 】键入关键字搜索地址,获取经纬度等

前言 又到熟悉的前言&#xff0c;接到个需求&#xff0c;要引入高德地图api&#xff0c;我就记录一下&#xff0c;要是有帮助记得点赞、收藏、关注&#x1f601;。 后续有时间会慢慢完善一些文章&#xff1a;&#xff08;画饼时间&#xff09; map组件自定义气泡、mark标记点…...

java中如何优雅处理多租户系统的查询?

多租户系统通常是指一个应用服务多个客户&#xff08;租户&#xff09;&#xff0c;每个租户的数据需要隔离&#xff0c;确保数据安全和隐私。处理这样的系统需要考虑数据隔离、查询效率、代码的可维护性等方面。 首先&#xff0c;我应该明确多租户的实现方式。常见的多租户数据…...

排序算法之线性时间排序:计数排序,基数排序,桶排序详解

排序算法之线性时间排序&#xff1a;计数排序、基数排序、桶排序详解 前言一、计数排序&#xff08;Counting Sort&#xff09;1.1 算法原理1.2 代码实现&#xff08;Python&#xff09;1.3 性能分析1.4 适用场景 二、基数排序&#xff08;Radix Sort&#xff09;2.1 算法原理2…...

Linux | mdadm 创建软 RAID

注&#xff1a;本文为 “Linux mdadm RAID” 相关文章合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 Linux 下用 mdadm 创建软 RAID 以及避坑 喵ฅ・&#xfecc;・ฅ Oct 31, 2023 前言 linux 下组软 raid 用 mdadm 命令&#xff0c;multi…...

物联网工程毕业设计课题实践指南

1. 智能家居控制系统 1.1 基于ZigBee的智能家居控制 实践过程 硬件选型主控:CC2530/CC2531传感器:温湿度、光照、人体红外执行器:继电器、电机、LED灯系统架构 A[传感器层] --> B[ZigBee网络] B --> C[网关] C --> D[云平台] D --> E[手机APP] 开…...

CodeEdit:macOS上一款可以让Xcode退休的IDE

CodeEdit 是一款轻量级、原生构建的代码编辑器&#xff0c;完全免费且开源。它使用纯 swift 实现&#xff0c;而且专为 macOS 设计&#xff0c;旨在为开发者提供更高效、更可靠的编程环境&#xff0c;同时释放 Mac 的全部潜力。 Stars 数21,719Forks 数1,081 主要特点 macOS 原…...

LLaMA-Factory 微调 Qwen2-7B-Instruct

一、系统环境 使用的 autoDL 算力平台 1、下载基座模型 pip install -U huggingface_hub export HF_ENDPOINThttps://hf-mirror.com # &#xff08;可选&#xff09;配置 hf 国内镜像站huggingface-cli download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat -…...

mac本地docker镜像上传指定虚拟机

在Mac本地将Docker镜像上传至指定虚拟机的完整步骤 1. 在Mac本地保存Docker镜像为文件 通过docker save命令将镜像打包为.tar文件&#xff0c;便于传输至虚拟机。 # 示例&#xff1a;保存名为"my_image"的镜像到当前目录 docker save -o my_image.tar my_image:ta…...

从代码学习深度学习 - 风格迁移 PyTorch版

文章目录 前言方法 (Methodology)阅读内容和风格图像预处理和后处理抽取图像特征定义损失函数内容损失 (Content Loss)风格损失 (Style Loss)全变分损失 (Total Variation Loss)总损失函数初始化合成图像训练模型总结前言 大家好!欢迎来到我们的深度学习代码学习系列。今天,…...

软件设计师考试《综合知识》设计模式之——工厂模式与抽象工厂模式考点分析

软件设计师考试《综合知识》工厂模式与抽象工厂模式考点分析 1. 分值占比与考察趋势&#xff08;75分制&#xff09; 年份题量分值占总分比例核心考点2023111.33%抽象工厂模式适用场景2022222.67%工厂方法 vs 抽象工厂区别2021111.33%工厂方法模式结构2020111.33%简单工厂模式…...