Vue百日學習計劃Day43-45天詳細計劃-Gemini版

Day 43: Composable 函數基礎與抽取簡單邏輯 (~3 小時)

  • 本日目標: 理解 Composable 函數的概念、優勢,并學會如何將簡單的、無狀態的邏輯抽取為 Composable。
  • 所需資源: Vue 3 官方文檔 (組合式函數): https://cn.vuejs.org/guide/reusability/composables.html

學習計劃:

  • 番茄時鐘 1 (25 分鐘工作 + 5 分鐘休息):

    • 內容: Composable 函數的引入與優勢。
    • 活動: 閱讀官方文檔中關于“組合式函數”的介紹。理解 Composable 函數是為了解決在 Composition API 中復用帶狀態邏輯的問題。對比它與 Mixin、Renderless Components 等傳統復用方式的優缺點。
    • 思考: Composable 如何提升代碼組織性、可讀性以及類型推斷能力?
    • 休息: 短暫休息。
  • 番茄時鐘 2 (25 分鐘工作 + 5 分鐘休息):

    • 內容: Composable 函數的基本結構。
    • 活動: 學習 Composable 函數的約定:通常以 use 開頭命名(如 useMouse),是普通的 JavaScript 函數,接受參數并返回狀態和方法。
    • 實踐: 在你的 Vue 項目中創建一個 src/composables 目錄。在其中創建一個 useCounter.js 文件,定義一個簡單的函數,不包含任何響應式狀態,例如 export function useGreeting(name) { return Hello, ${name}; }
    • 休息: 快速調整狀態。
  • 番茄時鐘 3 (25 分鐘工作 + 5 分鐘休息):

    • 內容: 在組件中使用 Composable 函數。
    • 活動: 學習如何在組件的 <script setup> 中導入并調用 Composable 函數。
    • 實踐: 在你的 App.vue 或其他組件中,導入并調用 useGreeting。在模板中顯示其返回值。
    • 休息: 短暫放松。
  • 番茄時鐘 4 (25 分鐘工作 + 5 分鐘休息):

    • 內容: 抽取簡單的帶狀態邏輯 (以 ref 為例)。
    • 活動: 閱讀官方文檔中關于“約定與最佳實踐”的部分,特別是關于在 Composable 中使用響應式 API 的部分。理解 Composable 的核心是能夠封裝響應式狀態。
    • 實踐: 修改 useCounter.js,使其包含響應式狀態。例如:export function useCounter(initialValue = 0) { const count = ref(initialValue); const increment = () => count.value++; return { count, increment }; }
    • 休息: 補充水分。
  • 總結與回顧 (10-15 分鐘):

    • 回顧 Composable 函數的基本概念和 use 命名約定。
    • 確認你理解了 Composable 函數如何封裝并導出響應式狀態。
    • 確保你在組件中成功使用了包含響應式狀態的 Composable。

Day 44: Composable 函數 - 生命周期與偵聽器集成 (~3 小時)

  • 本日目標: 學習如何在 Composable 函數中集成生命周期鉤子和偵聽器,以封裝更復雜的帶狀態邏輯。
  • 所需資源: Vue 3 官方文檔 (組合式函數): https://cn.vuejs.org/guide/reusability/composables.html

學習計劃:

  • 番茄時鐘 1 (25 分鐘工作 + 5 分鐘休息):

    • 內容: Composable 中使用生命周期鉤子。
    • 活動: 理解 Composable 函數可以在 setup 期間被調用,因此可以在 Composable 內部直接使用 onMounted, onUnmounted 等生命周期鉤子。這些鉤子會注冊到調用該 Composable 的組件實例上。
    • 實踐: 修改 useCounter.js (或創建一個新的 useLogger.js),在其中添加 onMounted(() => console.log('Composable mounted'))onUnmounted(() => console.log('Composable unmounted'))
    • 休息: 短暫休息。
  • 番茄時鐘 2 (25 分鐘工作 + 5 分鐘休息):

    • 內容: 結合生命周期鉤子實現實際功能。
    • 活動: 思考一個常見的場景:鼠標位置追蹤。它需要 onMounted 來添加事件監聽器,并在 onUnmounted 中移除事件監聽器以防止內存泄漏。
    • 實踐: 創建 useMouse.js
      import { ref, onMounted, onUnmounted } from 'vue';
      export function useMouse() {const x = ref(0);const y = ref(0);function update(event) {x.value = event.pageX;y.value = event.pageY;}onMounted(() => window.addEventListener('mousemove', update));onUnmounted(() => window.removeEventListener('mousemove', update));return { x, y };
      }
      
    • 休息: 快速調整狀態。
  • 番茄時鐘 3 (25 分鐘工作 + 5 分鐘休息):

    • 內容: 在 Composable 中使用偵聽器 (watch, watchEffect)。
    • 活動: 理解 Composable 函數也可以包含 watchwatchEffect 來偵聽其內部或外部傳入的響應式狀態變化。這使得 Composable 能夠封裝帶有副作用的邏輯。
    • 實踐:useMouse.js 中添加一個 watchEffect(() => { console.log(Mouse position: ${x.value}, ${y.value}); }); 觀察其效果。
    • 休息: 短暫放松。
  • 番茄時鐘 4 (25 分鐘工作 + 5 分鐘休息):

    • 內容: 封裝異步數據獲取邏輯。
    • 活動: 這是一個非常常見的 Composable 應用場景。結合 ref (用于數據、加載狀態、錯誤) 和 onMounted (用于觸發請求)。
    • 實踐: 創建 useFetch.js
      import { ref, onMounted } from 'vue';
      export function useFetch(url) {const data = ref(null);const error = ref(null);const loading = ref(true);onMounted(async () => {try {const res = await fetch(url);data.value = await res.json();} catch (err) {error.value = err;} finally {loading.value = false;}});return { data, error, loading };
      }
      
    • 休息: 補充能量。
  • 總結與回顧 (10-15 分鐘):

    • 回顧如何在 Composable 中使用生命周期鉤子 (onMounted, onUnmounted) 和偵聽器 (watch, watchEffect)。
    • 鞏固如何通過 Composable 封裝帶有副作用的邏輯,例如事件監聽和數據獲取。
    • 確保 useMouseuseFetch Composable 能夠在組件中正常工作。

Day 45: Composable 函數 - 高級用法與最佳實踐 (~3 小時)

  • 本日目標: 掌握 Composable 的高級用法,如接受參數、處理響應式參數,并理解使用 Composable 的最佳實踐。
  • 所需資源: Vue 3 官方文檔 (組合式函數): https://cn.vuejs.org/guide/reusability/composables.html

學習計劃:

  • 番茄時鐘 1 (25 分鐘工作 + 5 分鐘休息):

    • 內容: Composable 接受參數。
    • 活動: 理解 Composable 作為普通 JavaScript 函數,可以接受任意數量和類型的參數。這使得它們更具通用性。
    • 實踐: 修改 useFetch.js,使其接受一個 options 對象作為第二個參數,用于配置 Workspace 請求(例如 method, headers, body)。
    • 休息: 短暫休息。
  • 番茄時鐘 2 (25 分鐘工作 + 5 分鐘休息):

    • 內容: 處理 Composable 的響應式參數。
    • 活動: 學習如何處理傳入 Composable 的響應式參數。如果傳入的參數是響應式的(refreactive),并且 Composable 內部的邏輯需要響應這些參數的變化,就需要使用 watchtoRefs 來響應。
    • 實踐: 修改 useFetch.js,使其 url 參數也變為響應式的。例如,useFetch(url: Ref<string>),并在內部使用 watch(url, fetchData) 來在 url 變化時重新發起請求。
    • 休息: 快速調整狀態。
  • 番茄時鐘 3 (25 分鐘工作 + 5 分鐘休息):

    • 內容: Composables 之間的組合。
    • 活動: 理解 Composable 函數之間可以互相調用和組合,形成更復雜的邏輯。這大大提高了代碼的模塊化和可維護性。
    • 實踐: 創建一個 usePaginatedFetch.js,它內部調用 useFetch,并添加分頁相關的邏輯(如 currentPageitemsPerPagepaginatedData)。
    • 休息: 短暫放松。
  • 番茄時鐘 4 (25 分鐘工作 + 5 分鐘休息):

    • 內容: Composable 的最佳實踐與命名約定。
    • 活動: 回顧官方文檔中關于 Composable 最佳實踐的部分:use 命名約定、返回一個對象(而不是數組)、避免在 Composable 內部執行 DOM 操作(除非封裝了通用行為)、注意副作用的清理。
    • 思考: 為什么 Composable 內部的 DOM 操作應謹慎?為什么推薦返回一個對象?
    • 休息: 補充能量。
  • 總結與實踐 (10-15 分鐘):

    • 回顧 Composable 函數接受響應式參數并進行響應的方法。
    • 鞏固 Composable 之間相互組合的能力。
    • 討論 Composable 的最佳實踐,確保你的代碼符合規范。
    • 嘗試將你項目中的某個復雜組件中的一部分邏輯抽取為 Composable。

掌握檢查:

  • 在 Day 45 結束時,你應該能夠:
    • 清晰理解 Composable 函數的定義、優勢和 use 命名約定。
    • 能夠將簡單的響應式狀態和邏輯(如計數器)封裝成 Composable。
    • 能夠在 Composable 中使用 onMounted, onUnmounted 等生命周期鉤子來管理副作用。
    • 能夠在 Composable 中使用 watchwatchEffect 來響應內部或外部的響應式數據變化。
    • 能夠封裝異步數據獲取等帶有復雜副作用的邏輯。
    • 理解 Composable 如何接受參數,并能處理響應式參數。
    • 理解 Composable 之間如何相互組合以構建更復雜的邏輯。
    • 了解 Composable 的最佳實踐,如返回對象、副作用清理等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906581.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++:list容器,deque容器

list容器&#xff1a;雙向鏈表容器&#xff0c;底層是雙向鏈表。 簡單使用如下&#xff1a; #include<iostream> #include<list> using namespace std;int main() {list<int> lst;lst.push_back(1);lst.push_back(2);lst.push_back(3);lst.push_front(4);l…

STM32之溫濕度傳感器(DHT11)

KEIL軟件實現printf格式化輸出 一般在標準C庫是提供了格式化輸出和格式化輸入等函數&#xff0c;用戶想要使用該接口&#xff0c;則需要包含頭文件 #include &#xff0c;由于printf函數以及scanf函數是向標準輸出以及標準輸入中進行輸出與輸入&#xff0c;標準輸出一般指的是…

【蒼穹外賣】Day01—Mac前端環境搭建

目錄 一、安裝Nginx &#xff08;一&#xff09;安裝Homebrew &#xff08;二&#xff09;Homebrew安裝Nginx 1. 執行安裝命令&#xff1a; 2. 驗證安裝&#xff1a; &#xff08;三&#xff09;啟動與停止Nginx 二、配置Nginx 1. 替換nginx.conf 2. 替換html文件夾 三…

docker面試題(3)

如何臨時退出一個正在交互的容器的終端&#xff0c;而不終止它 按ctrlp&#xff0c;后按ctrlq &#xff0c;如果按ctrlc會使容器內的應用進程終止&#xff0c;進而會使容器終止 很多應用容器都默認是后臺運行的&#xff0c;怎么查看它們輸出的日志信息 使用docker logs &#…

單片機設計_四軸飛行器(STM32)

四軸飛行器&#xff08;STM32&#xff09; 想要更多項目私wo!!! 一、系統簡介 四軸飛行器是一種通過四個旋翼產生的升力實現飛行的無人機&#xff0c;其核心控制原理基于歐拉角動力學模型。四軸飛行器通過改變四個電機的轉速來實現六自由度控制&#xff08;前后、左右、上下…

Vue 3 與 Vue 2 的區別詳解

Vue 3 在性能、語法、響應式、類型系統等方面相比 Vue 2 做了大幅優化和改進。本篇將從多個維度詳細對比 Vue 3 與 Vue 2 的核心區別。 &#x1f4cc; 核心對比表格 對比維度Vue 2Vue 3說明核心 API 模式Options APIComposition API&#xff08;兼容 Options&#xff09;Vue 3…

深入理解 Redisson 看門狗機制:保障分布式鎖自動續期

在分布式系統的開發中&#xff0c;分布式鎖是解決資源競爭、數據一致性問題的關鍵手段。Redisson 作為一個在 Java 領域廣泛使用的 Redis 客戶端框架&#xff0c;為我們提供了功能強大且易用的分布式鎖實現。其中&#xff0c;看門狗&#xff08;watchDog&#xff09;機制更是 R…

配置gem5環境:Dockerfile使用

下載ZIP文件 到dockerfile所在目錄下&#xff1a; 運行以下命令 注意不要忘記最后的標點 . docker build -t gem5bootcamp .在 Dockerfile 所在目錄下執行 docker build 時&#xff0c;Docker 會按照 Dockerfile 中的指令&#xff0c;自動下載和構建所需的一切。不過這過程里…

角度回歸——八參數檢測四邊形Gliding Vertex

文章目錄 一、介紹&#xff08;一&#xff09;五參數檢測方法&#xff08; 基于角度&#xff09;&#xff08;二&#xff09;八參數檢測方法&#xff08;point-based&#xff09;的邊界 二、方案分析&#xff08;一&#xff09;問題定義&#xff08;二&#xff09;方案&#xf…

鴻蒙系統電腦:開啟智能辦公新時代

鴻蒙系統電腦&#xff1a;開啟智能辦公新時代 引言 2025 年 5 月 8 日&#xff0c;華為正式推出了鴻蒙系統電腦&#xff0c;這款具有里程碑意義的產品&#xff0c;不僅彰顯了華為在智能設備領域的創新實力&#xff0c;也為用戶帶來了全新的智能辦公體驗。在數字化轉型加速的背…

計量單片機 RN8302:特性、使用與應用

在現代電力監測與能源管理領域&#xff0c;精確的電能計量至關重要。計量單片機 RN8302 作為一款高性能的電能計量芯片&#xff0c;憑借其卓越的特性與功能&#xff0c;在眾多應用場景中發揮著關鍵作用。本文將全面深入地介紹 RN8302 的各項特性、使用方法、注意事項以及廣泛的…

Flink 的窗口機制

&#x1fa9f; 1. 基于時間驅動的滾動時間窗口&#xff08;Tumbling Time Window - Time-based&#xff09; ? 定義&#xff1a; 每隔固定的時間周期開啟一個新的窗口。窗口之間不重疊。 &#x1f552; 示例&#xff1a; DataStream<Tuple2<String, Integer>>…

【RA-Eco-RA2L1-48PIN】ADC 電壓表與OLED顯示

【RA-Eco-RA2L1-48PIN】ADC 電壓表與OLED顯示 本文介紹了 RA-Eco-RA2L1-48PIN 開發板通過瑞薩 e2 Studio 靈活軟件包&#xff08;FSP&#xff09;編程實現 ADC 串口采集電壓和OLED顯示電壓數值的項目設計&#xff0c;包括串口電壓值串口打印、硬件 IIC 通信協議配置、 OLED顯示…

GraphQL在.NET 8中的全面實踐指南

一、GraphQL與.NET 8概述 GraphQL是一種由Facebook開發的API查詢語言&#xff0c;它提供了一種更高效、更靈活的替代REST的方案。與REST不同&#xff0c;GraphQL允許客戶端精確指定需要的數據結構和字段&#xff0c;避免了"過度獲取"或"不足獲取"的問題。…

Elasticsearch 寫入性能優化有哪些常見手段?

Elasticsearch 寫入性能優化常見手段主要有以下 10 個方向&#xff0c;建議根據具體業務場景組合使用&#xff1a; 批量寫入優化 使用_bulk API 批量提交文檔建議每批次 5-15MB 數據量并發執行多個批量請求 索引配置調優 PUT /my_index {"settings": {"inde…

【圖像大模型】基于深度對抗網絡的圖像超分辨率重建技術ESRGAN深度解析

基于深度對抗網絡的圖像超分辨率重建技術ESRGAN深度解析 一、技術背景與核心創新1.1 圖像超分辨率技術演進1.2 核心技術創新對比 二、算法原理深度解析2.1 網絡架構設計2.1.1 RRDB模塊結構 2.2 損失函數設計2.2.1 對抗損失&#xff08;Adversarial Loss&#xff09;2.2.2 感知損…

第八天 搭建車輛狀態監控平臺(Docker+Kubernetes) OTA升級服務開發(差分升級、回滾機制)

前言 在智能網聯汽車快速發展的今天&#xff0c;車輛狀態監控和OTA&#xff08;Over-The-Air&#xff09;升級已成為智能汽車的核心能力。本文將手把手帶你從零開始搭建基于云原生技術的車輛狀態監控平臺&#xff0c;并開發完整的OTA升級服務系統。無論你是剛接觸容器技術的開…

五分鐘學會如何封裝Jsckson工具類

前言&#xff1a;在 Java 開發中&#xff0c;JSON 是一種非常常見的數據格式&#xff0c;而 Jackson 是處理 JSON 的主流庫之一&#xff0c;為了提高代碼的復用性、可維護性&#xff0c;我們通常會將 Jackson 的操作封裝成一個工具類&#xff0c;簡化使用。 ???這里是秋刀魚…

InternLM 論文分類微調實踐(XTuner 版)

1.環境安裝 我創建開發機選擇鏡像為Cuda12.2-conda&#xff0c;選擇GPU為100%A100的資源配置 Conda 管理環境 conda create -n xtuner_101 python3.10 -y conda activate xtuner_101 pip install torch2.4.0cu121 torchvision torchaudio --extra-index-url https://downloa…

軟考中級軟件設計師——設計模式篇

一、設計模式核心分類 設計模式分為 3 大類&#xff0c;共 23 種模式&#xff08;考試常考約 10-15 種&#xff09;&#xff1a; 分類核心模式考試重點創建型模式工廠方法、抽象工廠、單例、生成器、原型單例模式的實現&#xff08;懶漢、餓漢&#xff09;、工廠模式的應用場…