# 构建银行应用第1部分:Web应用中的HTML模板与路由 ```mermaid journey title 你的银行应用开发旅程 section SPA 基础 了解单页应用: 3: Student 学习模板概念: 4: Student 精通 DOM 操作: 4: Student section 路由系统 实现客户端路由: 4: Student 处理浏览器历史: 5: Student 创建导航系统: 5: Student section 专业模式 构建模块化架构: 5: Student 应用最佳实践: 5: Student 创建用户体验: 5: Student ``` 1969年,当阿波罗11号的导航计算机飞向月球时,它必须在不重启整个系统的情况下切换不同程序。现代Web应用类似——它们改变你看到的内容而不重新加载所有内容。这创造了用户如今期望的流畅、响应式体验。 与每次交互都重新加载整个页面的传统网站不同,现代Web应用只更新需要更改的部分。这种方法就像任务控制中心在保持持续通信的同时切换不同显示屏一样,产生了我们习以为常的流畅体验。 以下是造成差异的关键: | 传统多页面应用 | 现代单页面应用 | |----------------------------|-------------------------| | **导航** | 每个屏幕都全页重新加载 | 内容瞬时切换 | | **性能** | 由于完整HTML下载较慢 | 通过局部更新更快 | | **用户体验** | 令人不适的页面闪烁 | 平滑的类应用过渡 | | **数据共享** | 页面间共享困难 | 状态管理简单 | | **开发** | 维护多个HTML文件 | 单一HTML与动态模板 | **理解演变:** - **传统应用** 每次导航都需服务器请求 - **现代SPA** 一次加载,使用JavaScript动态更新内容 - **用户期望** 现偏好即时、无缝交互 - **性能优势** 包括带宽减少和响应加快 本课将构建一个拥有多个无缝流转页面的银行应用。就像科学家使用可重构的模块化仪器进行不同实验一样,我们将使用HTML模板作为可重复使用的组件,根据需要显示。 你将使用HTML模板(不同画面的可重用蓝图)、JavaScript路由(切换不同屏幕的系统)和浏览器历史API(保持返回按钮正常工作)。这些是React、Vue和Angular等框架的基本技术。 最终,你将获得一个展示专业单页面应用原则的可用银行应用。 ```mermaid mindmap root((单页应用程序)) Architecture 模板系统 客户端路由 状态管理 事件处理 Templates 可复用组件 动态内容 DOM操作 内容切换 Routing URL管理 历史API 导航逻辑 浏览器集成 User Experience 快速导航 平滑过渡 状态一致 现代交互 Performance 减少服务器请求 更快的页面切换 高效资源使用 更佳响应性 ``` ## 课前测验 [课前测验](https://ff-quizzes.netlify.app/web/quiz/41) ### 你需要准备的内容 我们需要一个本地Web服务器来测试银行应用——别担心,没你想象的难!如果你还没有配置,只需安装 [Node.js](https://nodejs.org) 并在项目文件夹运行 `npx lite-server`。这个命令会启动本地服务器并自动在浏览器打开应用。 ### 准备工作 在你的电脑上创建一个名为 `bank` 的文件夹,里面放一个名为 `index.html` 的文件。我们将从这个HTML [模板](https://en.wikipedia.org/wiki/Boilerplate_code)开始: ```html Bank App ``` **这个模板提供了:** - **建立** 正确DOCTYPE声明的HTML5文档结构 - **设置** 字符编码为UTF-8以支持国际文本 - **启用** 响应式设计,使用viewport元标签兼容移动设备 - **设定** 浏览器标签页显示的描述性标题 - **创建** 一个干净的主体部分,用于构建应用 > 📁 **项目结构预览** > > **完成此课时后,项目将包含:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **文件职责:** > - **index.html**:包含所有模板和应用结构 > - **app.js**:负责路由、导航和模板管理 > - **模板**:定义登录、仪表盘及其他屏幕的UI --- ## HTML模板 模板解决了Web开发中的一个根本问题。古腾堡在1440年代发明活字印刷时意识到,与其刻画整页,他可以制作可复用的字母块并按需排列。HTML模板原理相同——不为每个屏幕创建单独HTML文件,而是定义可复用结构,按需显示。 ```mermaid flowchart TD A["📋 模板定义"] --> B["💬 在DOM中隐藏"] B --> C["🔍 JavaScript查找模板"] C --> D["📋 克隆模板内容"] D --> E["🔗 附加到可见DOM"] E --> F["👁️ 用户看到内容"] G["登录模板"] --> A H["仪表板模板"] --> A I["未来模板"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` 把模板看作应用不同部分的蓝图。就像建筑师绘制一个蓝图多次使用,而不是重复绘制相同房间,我们创建模板一次,按需实例化。浏览器会将这些模板隐藏,直到JavaScript激活它们。 如果想为网页创建多个屏幕,一种办法是每个屏幕一个HTML文件。然而,这样做有不便: - 切换屏幕时必须重新加载整个HTML,速度较慢 - 不同屏幕间共享数据困难 另一种方法是只用一个HTML文件,通过 `