# 构建银行应用第 2 部分:构建登录和注册表单 ```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