# 建立銀行應用程式 第二部:建立登入與註冊表單 ```mermaid journey title 你的表單開發旅程 section HTML 基礎 了解表單元素: 3: Student 學習輸入類型: 4: Student 精通無障礙設計: 4: Student section JavaScript 整合 處理表單送出: 4: Student 實作 AJAX 通訊: 5: Student 處理伺服器回應: 5: Student section 驗證系統 建立多層驗證: 5: Student 增強使用者體驗: 5: Student 確保資料完整性: 5: Student ``` ## 課前測驗 [課前測驗](https://ff-quizzes.netlify.app/web/quiz/43) 曾經填寫過線上表單,卻被拒絕你的電子郵件格式?或者點擊提交時,所有資料都消失了?這些令人沮喪的經驗我們都遇過。 表單是使用者與應用程式功能之間的橋樑。就像空中交通管制員小心翼翼指引飛機安全抵達目的地,精心設計的表單提供明確的回饋並防止代價高昂的錯誤。反之,糟糕的表單會像忙碌機場中的誤傳一樣,讓使用者迅速離開。 在本課中,我們將把你的靜態銀行應用程式變成交互式應用程式。你將學會如何建立表單來驗證使用者輸入、與伺服器通訊並提供有用的回饋。可以想像成建立一個控制介面,讓使用者操作你的應用功能。 課程結束時,你將擁有完整的登入與註冊系統,並內建驗證,引導使用者走向成功,而非挫折。 ```mermaid mindmap root((表單開發)) HTML Foundation 語意元素 輸入類型 無障礙 標籤關聯 User Experience 驗證回饋 錯誤預防 載入狀態 成功訊息 JavaScript Integration 事件處理 AJAX 通訊 資料處理 錯誤管理 Validation Layers HTML5 驗證 用戶端邏輯 伺服器端安全 漸進增強 Modern Patterns Fetch API Async/Await 表單資料 API Promise 處理 ``` ## 先決條件 在開始建立表單前,先確定你的環境已正確設置。本課從先前課程中斷的地方繼續,若你跳過了中間步驟,建議先回頭完成基本設定。 ### 必備設定 | 元件 | 狀態 | 說明 | |-----------|--------|-------------| | [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 # 預期回應:「銀行 API v1.0.0」 ``` **如果看到 API 版本回應,代表環境已準備好!** --- ## 認識 HTML 表單與控制項 HTML 表單是使用者與你的網頁應用互動的方式。想像它們是 19 世紀連接遙遠地方的電報系統 —— 它們是使用者意圖與應用回應之間的通訊協定。設計得當時,表單能捕捉錯誤、引導輸入格式並提供有用建議。 現代表單遠比單純輸入文字更為進階。HTML5 引入專用的輸入類型,能自動處理郵件驗證、數字格式及日期選擇等,增進無障礙與行動裝置體驗。 ### 基本必備表單元素 **每個表單必備的組件:** ```html
``` **此段程式碼的作用:** - **建立**一個帶唯一識別碼的表單容器 - **指定**資料提交的 HTTP 方法 - **為**輸入欄位關聯標籤以增進無障礙 - **定義**提交按鈕來處理表單動作 ### 現代輸入類型與屬性 | 輸入類型 | 目的 | 範例用法 | |------------|---------|---------------| | `text` | 一般文字輸入 | `` | | `email` | 電子郵件驗證 | `` | | `password` | 隱藏文字輸入 | `` | | `number` | 數字輸入 | `` | | `tel` | 電話號碼 | `` | > 💡 **HTML5 現代優勢**:利用專門的輸入類型,會自動啟用驗證、適合行動裝置的鍵盤,並增強無障礙體驗,無須額外 JavaScript! ### 按鈕類型與行為 ```html ``` **各種按鈕類型的功能:** - **提交按鈕**:觸發表單送出並將資料發送到指定端點 - **重置按鈕**:將所有欄位恢復初始狀態 - **一般按鈕**:無預設行為,需要自訂 JavaScript 以實現功能 > ⚠️ **重要提醒**:`` 元素是自閉合標籤,不需要閉合標籤。現代寫法是 `` 不用斜線。 ### 建立你的登入表單 現在建立一個實務的登入表單,示範現代 HTML 表單最佳實務。從基礎結構開始,並逐步加強無障礙功能與驗證。 ```html