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

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


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 用于错误捕获。
    • 能够在你的实践项目中,在合适的生命周期钩子中添加代码来执行特定任务。
相关推荐
喜欢吃燃面1 分钟前
C++算法竞赛:位运算
开发语言·c++·学习·算法
传奇开心果编程2 分钟前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化
Stringzhua9 分钟前
Vue中的数据渲染【4】
css·vue.js·css3
阿珊和她的猫4 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
_Kayo_6 小时前
node.js 学习笔记3 HTTP
笔记·学习
加班是不可能的,除非双倍日工资8 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi9 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
CCCC13101639 小时前
嵌入式学习(day 28)线程
jvm·学习
gnip9 小时前
vite和webpack打包结构控制
前端·javascript
excel10 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端