JavaScript 框架和庫
JavaScript 框架是現代前端 Web 開發的重要組成部分,它為開發人員提供了經過驗證的工具,用於構建可擴充套件的互動式 Web 應用程式。許多現代公司將框架作為其工具的標準部分,因此許多前端開發工作現在都需要框架經驗。這組文章提供了一個舒適的起點,幫助您開始學習框架。
作為一名有抱負的前端開發人員,在學習框架時很難知道從何開始——有如此多的框架可供選擇,新的框架不斷湧現,它們大多以相似的方式工作,但有些地方有所不同,而且在使用框架時有一些需要特別注意的地方。
我們不打算詳盡地教您所有需要了解的關於 React/ReactDOM、Vue 或其他特定框架的知識;框架團隊自己的文件(以及其他資源)已經完成了這項工作。相反,我們希望退一步,首先回答更基本的問題,例如
- 我為什麼要使用框架?它們為我解決了哪些問題?
- 在選擇框架時我應該問哪些問題?我甚至需要使用框架嗎?
- 框架有哪些功能?它們通常是如何工作的,以及框架對這些功能的實現有何不同?
- 它們與“原生”JavaScript 或 HTML 有何關聯?
之後,我們將提供一些涵蓋 React(一個流行的框架選擇)基本知識的教程,為您提供足夠的背景和熟悉度,以便您自己深入學習。我們希望您以務實的方式學習框架,同時不忘 Web 平臺的基本最佳實踐,例如可訪問性。
我們還提供了一些涵蓋其他框架選擇基礎知識的教程,供那些希望選擇與 React 不同框架的人使用。
注意:Scrimba 的 庫/框架 MDN 學習合作伙伴 互動式教程提供了框架與庫的有用總結,Web 上庫和框架的簡要歷史,以及有關 React 的一些背景資訊。
預備知識
在嘗試學習客戶端框架之前,您應該首先真正學習核心 Web 語言的基礎知識——HTML、CSS,尤其是 JavaScript。
您的程式碼將因此而變得更豐富、更專業,如果您瞭解框架所基於的基本 Web 平臺功能,您將能夠更自信地解決問題。
入門教程
React 教程
注意:React 教程最後測試於 2023 年 1 月,使用 React/ReactDOM 18.2.0 和 create-react-app 5.0.1。
如果您需要對照我們的版本檢查您的程式碼,您可以在我們的 todo-react 倉庫 中找到示例 React 應用程式程式碼的完成版本。要檢視正在執行的即時版本,請參閱 https://mdn.github.io/todo-react/。
- React 入門
-
在本文中,我們將向 React 打個招呼。我們將瞭解一些關於其背景和用例的細節,在本地計算機上設定一個基本的 React 工具鏈,並建立一個簡單的入門應用程式並進行操作,在此過程中學習一些 React 的工作原理。
- 開始我們的 React 待辦事項應用程式
-
假設我們接到任務,要用 React 建立一個概念驗證應用程式——一個允許使用者新增、編輯和刪除他們想要處理的任務,以及標記任務為已完成而不刪除它們的應用程式。本文將引導您完成基本
App元件結構和樣式的設定,為稍後新增的單個元件定義和互動性做好準備。 - 元件化我們的 React 應用程式
-
此時,我們的應用程式是一個整體。在讓它做事情之前,我們需要將其拆分為可管理、描述性的元件。React 對於什麼是一個元件並沒有嚴格的規定——這取決於您!在本文中,我們將向您展示一種合理的方式將我們的應用程式拆分為元件。
- React 互動性:事件和狀態
-
在制定好元件計劃後,現在是時候開始將我們的應用程式從完全靜態的 UI 更新為實際允許我們互動和更改內容的應用程式了。在本文中,我們將完成此操作,並在此過程中深入研究事件和狀態。
- React 互動性:編輯、過濾、條件渲染
-
當我們接近 React 之旅的尾聲時(至少目前如此),我們將為我們的待辦事項列表應用程式的主要功能區域新增最後的修飾。這包括允許您編輯現有任務,以及在所有任務、已完成任務和未完成任務之間過濾任務列表。在此過程中,我們將研究條件 UI 渲染。
- React 中的可訪問性
-
在我們的最後一篇教程文章中,我們將重點關注(雙關語)可訪問性,包括 React 中的焦點管理,這可以提高僅使用鍵盤的使用者和螢幕閱讀器使用者的可用性並減少混淆。
- React 資源
-
我們的最後一篇文章為您提供了一系列 React 資源,您可以使用這些資源進一步學習。
其他框架選擇
Ember 教程
注意:Ember 教程最後測試於 2020 年 5 月,使用 Ember/Ember CLI 3.18.0 版本。
如果您需要對照我們的版本檢查您的程式碼,您可以在 ember-todomvc-tutorial 倉庫 中找到示例 Ember 應用程式程式碼的完成版本。要檢視正在執行的即時版本,請參閱 https://nullvoxpopuli.github.io/ember-todomvc-tutorial/(這還包括教程中未涵蓋的一些額外功能)。
- Ember 入門
-
在我們的第一篇 Ember 文章中,我們將介紹 Ember 的工作原理和用途,在本地安裝 Ember 工具鏈,建立一個示例應用程式,然後進行一些初始設定以使其為開發做好準備。
- Ember 應用程式結構和元件化
-
在本文中,我們將直接規劃我們的 TodoMVC Ember 應用程式的結構,新增 HTML,然後將該 HTML 結構拆分為元件。
- Ember 互動性:事件、類和狀態
-
此時,我們將開始為我們的應用程式新增一些互動性,提供新增和顯示新待辦事項的功能。在此過程中,我們將瞭解如何在 Ember 中使用事件,建立元件類以包含 JavaScript 程式碼來控制互動功能,以及設定服務以跟蹤應用程式的資料狀態。
-
現在是時候開始處理我們應用程式中的頁尾功能了。在這裡,我們將更新待辦事項計數器以顯示仍需完成的待辦事項的正確數量,並正確地將樣式應用於已完成的待辦事項(即,複選框已選中的待辦事項)。我們還將連線“清除已完成”按鈕。在此過程中,我們將學習如何在模板中使用條件渲染。
- Ember 中的路由
-
在本文中,我們將學習路由或有時被稱為基於 URL 的過濾。我們將使用它為三個待辦事項檢視——“所有”、“活動”和“已完成”——提供唯一的 URL。
- Ember 資源和故障排除
-
我們的最後一篇 Ember 文章為您提供了一系列資源,您可以使用這些資源進一步學習,以及一些有用的故障排除和其他資訊。
Vue 教程
注意:Vue 教程最後測試於 2023 年 1 月,使用 Vue 3.2.45。
如果您需要對照我們的版本檢查您的程式碼,您可以在我們的 todo-vue 倉庫 中找到示例 Vue 應用程式程式碼的完成版本。要檢視正在執行的即時版本,請參閱 https://mdn.github.io/todo-vue/。
- Vue 入門
-
現在讓我們介紹 Vue,我們的第三個框架。在本文中,我們將簡要了解 Vue 的背景,學習如何安裝它並建立一個新專案,研究整個專案和單個元件的高階結構,瞭解如何在本地執行專案,並準備好開始構建我們的示例。
- 建立我們的第一個 Vue 元件
-
現在是時候深入研究 Vue,並建立我們自己的自定義元件了——我們將從建立一個元件開始,以表示待辦事項列表中的每個專案。在此過程中,我們將學習一些重要的概念,例如在其他元件中呼叫元件,透過 props 向它們傳遞資料以及儲存資料狀態。
- 渲染 Vue 元件列表
-
此時我們已經有一個完全正常的元件;現在我們準備嚮應用程式新增多個
ToDoItem元件。在本文中,我們將研究向App.vue元件新增一組待辦事項資料,然後我們將透過迴圈並使用v-for指令在ToDoItem元件中顯示這些資料。 - 新增新的待辦事項表單:Vue 事件、方法和模型
-
我們現在已經有了示例資料和一個迴圈,該迴圈獲取每條資料並將其渲染到我們的應用程式中的
ToDoItem中。接下來我們真正需要的是允許使用者在應用程式中輸入自己的待辦事項的能力,為此,我們需要一個文字<input>,一個在資料提交時觸發的事件,一個在提交時觸發以新增資料並重新渲染列表的方法,以及一個控制資料的模型。這就是我們將在本文中涵蓋的內容。 - 使用 CSS 為 Vue 元件設定樣式
-
是時候讓我們的應用程式看起來更漂亮了。在本文中,我們將探討使用 CSS 為 Vue 元件設定樣式的不同方法。
- 使用 Vue 計算屬性
-
在本文中,我們將使用 Vue 的計算屬性功能新增一個計數器,顯示已完成的待辦事項的數量。計算屬性的工作方式類似於方法,但僅在其依賴項之一發生更改時才重新執行。
- Vue 條件渲染:編輯現有待辦事項
-
現在是時候新增我們仍然缺少的主要功能之一了——編輯現有待辦事項的能力。為此,我們將利用 Vue 的條件渲染功能——即
v-if和v-else——允許我們在現有待辦事項檢視和可以更新待辦事項標籤的編輯檢視之間切換。我們還將研究新增刪除待辦事項的功能。 - Vue refs 和生命週期方法用於焦點管理
-
我們快完成 Vue 的學習了。最後要看的功能是焦點管理,換句話說,我們如何提高應用程式的鍵盤可訪問性。我們將研究使用 Vue refs 來處理這個問題——這是一個高階功能,它允許您直接訪問虛擬 DOM 下方的底層 DOM 節點,或者從一個元件直接訪問子元件的內部 DOM 結構。
- Vue 資源
-
現在,我們將透過為您提供一系列資源來結束我們的 Vue 學習,您可以使用這些資源進一步學習,以及一些其他有用的提示。
Svelte 教程
注意:Svelte 教程最後測試於 2020 年 8 月,使用 Svelte 3.24.1。
如果您需要對照我們的版本檢查您的程式碼,您可以在我們的 mdn-svelte-tutorial 倉庫中找到每篇文章後應該有的示例 Svelte 應用程式程式碼的完成版本。要檢視正在執行的即時版本,請參閱我們的 Svelte REPL:https://svelte.dev/repl/378dd79e0dfe4486a8f10823f3813190?version=3.23.2。
- Svelte 入門
-
在本文中,我們將快速介紹 Svelte 框架。我們將瞭解 Svelte 的工作原理以及它與我們目前所見的其他框架和工具的區別。然後我們將學習如何設定開發環境,建立一個示例應用程式,理解專案結構,並瞭解如何在本地執行它並將其構建用於生產。
- 開始我們的 Svelte 待辦事項列表應用程式
-
現在我們已經對 Svelte 的工作原理有了基本的瞭解,我們可以開始構建我們的示例應用程式:一個待辦事項列表。在本文中,我們首先將瞭解應用程式所需的功能,然後我們將建立一個
Todos.svelte元件並放置靜態標記和樣式,為開始開發我們的待辦事項列表應用程式功能做好一切準備,我們將在後續文章中繼續進行。 - Svelte 中的動態行為:使用變數和 props
-
現在我們的標記和樣式都已準備就緒,我們可以開始為 Svelte 待辦事項列表應用程式開發所需的功能。在本文中,我們將使用變數和 props 使我們的應用程式具有動態性,允許我們新增和刪除待辦事項,將其標記為已完成,並按狀態過濾它們。
- 元件化我們的 Svelte 應用程式
-
本文的核心目標是探討如何將我們的應用程式拆分為可管理的元件並在它們之間共享資訊。我們將對我們的應用程式進行元件化,然後新增更多功能以允許使用者更新現有元件。
- 高階 Svelte:響應性、生命週期、可訪問性
-
在本文中,我們將新增應用程式的最終功能並進一步元件化我們的應用程式。我們將學習如何處理與更新物件和陣列相關的響應性問題。為了避免常見的陷阱,我們需要更深入地研究 Svelte 的響應性系統。我們還將研究解決一些可訪問性焦點問題,以及更多內容。
- 使用 Svelte stores
-
在本文中,我們將展示另一種處理 Svelte 中狀態管理的方法——Stores。Stores 是全域性資料倉庫,用於儲存值。元件可以訂閱 Stores 並在其值更改時接收通知。
- Svelte 中的 TypeScript 支援
-
我們現在將學習如何在 Svelte 應用程式中使用 TypeScript。首先,我們將學習 TypeScript 是什麼以及它能給我們帶來什麼好處。然後我們將看到如何配置我們的專案以使用 TypeScript 檔案。最後,我們將回顧我們的應用程式,看看我們必須進行哪些修改才能充分利用 TypeScript 功能。
- 部署和後續步驟
-
在最後一篇文章中,我們將介紹如何部署您的應用程式並使其線上,並分享一些您應該繼續學習的資源,以繼續您的 Svelte 學習之旅。
Angular 教程
注意:Angular 教程最後測試於 2021 年 4 月,使用 Angular CLI (NG) 11.2.5。
- Angular 入門
-
在本文中,我們將瞭解 Angular 的功能,安裝先決條件並設定一個示例應用程式,並瞭解 Angular 的基本架構。
- 開始我們的 Angular 待辦事項列表應用程式
-
此時,我們已準備好開始使用 Angular 建立我們的待辦事項列表應用程式。完成的應用程式將顯示待辦事項列表,幷包括編輯、刪除和新增功能。在本文中,您將瞭解應用程式結構,並逐步顯示一個基本的待辦事項列表。
- 為我們的 Angular 應用程式設定樣式
-
現在我們已經設定了基本的應用程式結構並開始顯示一些有用的東西,讓我們切換一下,花一篇文章來看看 Angular 如何處理應用程式的樣式。
- 建立專案元件
-
元件提供了一種組織應用程式的方式。本文將引導您建立一個元件來處理列表中的單個專案,並新增檢查、編輯和刪除功能。本文介紹了 Angular 事件模型。
- 過濾我們的待辦事項
-
現在讓我們繼續新增功能,允許使用者過濾他們的待辦事項,以便他們可以檢視活動、已完成或所有專案。
- 構建 Angular 應用程式和更多資源
-
這篇最後的 Angular 文章介紹瞭如何構建一個可用於生產的應用程式,並提供了更多資源供您繼續學習。
我們選擇了哪些框架?
我們的教程涵蓋了五個框架——Angular、Ember、React/ReactDOM、Svelte 和 Vue
- 它們是流行的選擇,將存在一段時間——就像任何軟體工具一樣,最好選擇活躍開發且不太可能在下週停產的,並且在找工作時會成為您技能組合的理想補充。
- 它們擁有強大的社群和完善的文件。在學習複雜主題時,尤其是在剛開始時,能夠獲得幫助非常重要。
- 我們沒有資源來涵蓋 所有 現代框架。無論如何,這個列表很難保持最新,因為新的框架不斷湧現。
- 作為初學者,試圖從大量可用選擇中選擇重點是一個非常現實的問題。因此,保持列表簡短是有幫助的。
我們想事先宣告——我們選擇這些框架並不是因為我們認為它們是最好的,也不是因為我們以任何方式認可它們。我們只是認為它們在上述標準中得分很高。