# 建立銀行應用程式第二部分:建立登入和註冊表單 ## 課前測驗 [課前測驗](https://ff-quizzes.netlify.app/web/quiz/43) 你是否曾經在網上填寫表單時,因為電子郵件格式不正確而被拒絕?或者在點擊提交後丟失了所有信息?我們都遇到過這些令人沮喪的情況。 表單是用戶與應用程式功能之間的橋樑。就像空中交通管制員使用謹慎的協議來引導飛機安全到達目的地一樣,設計良好的表單可以提供清晰的反饋並防止代價高昂的錯誤。相反,設計不良的表單可能會像繁忙機場中的溝通不良一樣迅速趕走用戶。 在本課程中,我們將把你的靜態銀行應用程式轉變為互動式應用程式。你將學習如何建立能夠驗證用戶輸入、與伺服器通信並提供有用反饋的表單。可以將其視為構建控制介面,讓用戶能夠導航你的應用程式功能。 完成本課程後,你將擁有一個完整的登入和註冊系統,並具備引導用戶成功而非挫敗的驗證功能。 ## 先決條件 在我們開始建立表單之前,讓我們確保你已正確設置好所有內容。本課程從上一課程結束的地方開始,因此如果你跳過了前面的內容,可能需要先回去完成基本設置。 ### 必需的設置 | 組件 | 狀態 | 描述 | |------|------|------| | [HTML 模板](../1-template-route/README.md) | ✅ 必需 | 你的基本銀行應用程式結構 | | [Node.js](https://nodejs.org) | ✅ 必需 | 用於伺服器的 JavaScript 運行時 | | [銀行 API 伺服器](../api/README.md) | ✅ 必需 | 用於數據存儲的後端服務 | > 💡 **開發提示**:你將同時運行兩個獨立的伺服器——一個用於前端銀行應用程式,另一個用於後端 API。這種設置模仿了前端和後端服務獨立運行的真實世界開發環境。 ### 伺服器配置 **你的開發環境將包括:** - **前端伺服器**:提供你的銀行應用程式(通常使用埠 `3000`) - **後端 API 伺服器**:處理數據存儲和檢索(埠 `5000`) - **兩個伺服器**可以同時運行而不會發生衝突 **測試你的 API 連接:** ```bash curl http://localhost:5000/api # Expected response: "Bank API v1.0.0" ``` **如果你看到 API 版本的回應,那麼你已準備好繼續!** --- ## 理解 HTML 表單和控件 HTML 表單是用戶與你的網頁應用程式溝通的方式。可以將它們想像成 19 世紀連接遙遠地點的電報系統——它們是用戶意圖與應用程式回應之間的通信協議。精心設計的表單可以捕捉錯誤、引導輸入格式並提供有用的建議。 現代表單比基本的文字輸入要複雜得多。HTML5 引入了專門的輸入類型,可以自動處理電子郵件驗證、數字格式和日期選擇。這些改進不僅有助於提高可訪問性,還能改善移動用戶的體驗。 ### 基本表單元素 **每個表單都需要的構建塊:** ```html
``` **這段代碼的作用:** - **創建**一個具有唯一標識符的表單容器 - **指定**數據提交的 HTTP 方法 - **關聯**標籤與輸入框以提高可訪問性 - **定義**一個提交按鈕來處理表單 ### 現代輸入類型和屬性 | 輸入類型 | 用途 | 使用範例 | |----------|------|----------| | `text` | 一般文字輸入 | `` | | `email` | 電子郵件驗證 | `` | | `password` | 隱藏文字輸入 | `` | | `number` | 數字輸入 | `` | | `tel` | 電話號碼 | `` | > 💡 **現代 HTML5 優勢**:使用特定的輸入類型可以提供自動驗證、適合的移動鍵盤以及更好的可訪問性支持,無需額外的 JavaScript! ### 按鈕類型和行為 ```html ``` **每種按鈕類型的作用:** - **提交按鈕**:觸發表單提交並將數據發送到指定的端點 - **重置按鈕**:將所有表單字段恢復到初始狀態 - **普通按鈕**:不提供默認行為,需要自定義 JavaScript 來實現功能 > ⚠️ **重要提示**:`` 元素是自閉合的,不需要閉合標籤。現代最佳實踐是寫 `` 而不加斜線。 ### 建立你的登入表單 現在讓我們建立一個實用的登入表單,展示現代 HTML 表單的實踐。我們將從基本結構開始,逐步增強其可訪問性功能和驗證。 ```html