# 建立銀行應用程式第2部分:建立登入和註冊表單 ```mermaid journey title Your Form Development Journey section HTML Foundation Understand form elements: 3: Student Learn input types: 4: Student Master accessibility: 4: Student section JavaScript Integration Handle form submission: 4: Student Implement AJAX communication: 5: Student Process server responses: 5: Student section Validation Systems Create multi-layer validation: 5: Student Enhance user experience: 5: Student Ensure data integrity: 5: Student ``` ## 課前測驗 [課前測驗](https://ff-quizzes.netlify.app/web/quiz/43) 你是否曾經在網上填寫表單時,因為電子郵件格式不正確而被拒絕?或者在點擊提交後丟失了所有信息?我們都遇到過這些令人沮喪的情況。 表單是用戶與應用程式功能之間的橋樑。就像空中交通管制員使用謹慎的協議來引導飛機安全到達目的地一樣,設計良好的表單能提供清晰的反饋並防止代價高昂的錯誤。相反,設計不良的表單可能會像繁忙機場中的溝通不暢一樣迅速趕走用戶。 在本課程中,我們將把你的靜態銀行應用程式轉變為一個互動式應用程式。你將學習如何建立能驗證用戶輸入、與伺服器通信並提供有用反饋的表單。可以將其視為建立控制介面,讓用戶能夠導航你的應用程式功能。 完成後,你將擁有一個完整的登入和註冊系統,並具備引導用戶成功而非沮喪的驗證功能。 ```mermaid mindmap root((Form Development)) HTML Foundation Semantic Elements Input Types Accessibility Label Association User Experience Validation Feedback Error Prevention Loading States Success Messaging JavaScript Integration Event Handling AJAX Communication Data Processing Error Management Validation Layers HTML5 Validation Client-side Logic Server-side Security Progressive Enhancement Modern Patterns Fetch API Async/Await Form Data API Promise Handling ``` ## 先決條件 在開始建立表單之前,讓我們確保你已正確設置好所有內容。本課程從上一課程結束的地方開始,因此如果你跳過了前面的部分,可能需要先回去完成基本設置。 ### 必要設置 | 組件 | 狀態 | 描述 | |------|------|------| | [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