# 建立銀行應用程式第一部分:網頁應用中的 HTML 模板與路由 ```mermaid journey title Your Banking App Development Journey section SPA Fundamentals Understand single-page apps: 3: Student Learn template concepts: 4: Student Master DOM manipulation: 4: Student section Routing Systems Implement client-side routing: 4: Student Handle browser history: 5: Student Create navigation systems: 5: Student section Professional Patterns Build modular architecture: 5: Student Apply best practices: 5: Student Create user experiences: 5: Student ``` 當阿波羅 11 號的導航電腦在 1969 年飛往月球時,它需要在不同的程式之間切換,而不需要重新啟動整個系統。現代的網頁應用程式也採用類似的方式——它們只改變你看到的部分,而不需要重新載入所有內容。這種方式創造了使用者今天所期望的流暢、快速的體驗。 與傳統網站每次互動都需要重新載入整個頁面不同,現代網頁應用程式只更新需要改變的部分。這種方式就像任務控制中心在保持持續通訊的同時切換不同的顯示畫面,創造了我們所期待的流暢體驗。 以下是兩者之間的顯著差異: | 傳統多頁應用程式 | 現代單頁應用程式 | |------------------|------------------| | **導航** | 每個畫面都需要重新載入整個頁面 | 即時內容切換 | | **效能** | 由於需要下載完整的 HTML,速度較慢 | 部分更新,速度更快 | | **使用者體驗** | 頁面閃爍,體驗不流暢 | 流暢,類似應用程式的過渡效果 | | **資料共享** | 頁面之間的資料共享困難 | 狀態管理更容易 | | **開發** | 需要維護多個 HTML 文件 | 單一 HTML 文件,使用動態模板 | **了解演進過程:** - **傳統應用程式**需要每次導航操作都向伺服器發送請求 - **現代單頁應用程式 (SPA)** 只需載入一次,並使用 JavaScript 動態更新內容 - **使用者期望**現在更偏好即時、無縫的互動 - **效能優勢**包括減少頻寬使用和更快的響應速度 在這堂課中,我們將建立一個銀行應用程式,擁有多個畫面並能流暢切換。就像科學家使用可重新配置的模組化儀器進行不同的實驗一樣,我們將使用 HTML 模板作為可重複使用的元件,根據需要顯示。 你將學習使用 HTML 模板(不同畫面的可重複使用藍圖)、JavaScript 路由(切換畫面的系統)以及瀏覽器的歷史 API(確保返回按鈕正常運作)。這些都是像 React、Vue 和 Angular 等框架所使用的基本技術。 完成後,你將擁有一個展示專業單頁應用程式原則的銀行應用程式。 ```mermaid mindmap root((Single-Page Applications)) Architecture Template System Client-side Routing State Management Event Handling Templates Reusable Components Dynamic Content DOM Manipulation Content Switching Routing URL Management History API Navigation Logic Browser Integration User Experience Fast Navigation Smooth Transitions Consistent State Modern Interactions Performance Reduced Server Requests Faster Page Transitions Efficient Resource Usage Better Responsiveness ``` ## 課前測驗 [課前測驗](https://ff-quizzes.netlify.app/web/quiz/41) ### 你需要準備什麼 我們需要一個本地網頁伺服器來測試我們的銀行應用程式——別擔心,這比聽起來簡單!如果你還沒有設置好,只需安裝 [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 meta 標籤來適應行動裝置 - **設置**在瀏覽器標籤中顯示的描述性標題 - **創建**一個乾淨的 body 區域,我們將在其中構建應用程式 > 📁 **專案結構預覽** > > **完成這堂課後,你的專案將包含:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **文件職責:** > - **index.html**:包含所有模板並提供應用程式結構 > - **app.js**:負責路由、導航和模板管理 > - **模板**:定義登入頁面、儀表板和其他畫面的 UI --- ## HTML 模板 模板解決了網頁開發中的一個基本問題。當古騰堡在 1440 年代發明活字印刷時,他意識到與其雕刻整個頁面,不如創建可重複使用的字母塊,並根據需要排列它們。HTML 模板採用相同的原理——與其為每個畫面創建單獨的 HTML 文件,不如定義可重複使用的結構,並在需要時顯示它們。 ```mermaid flowchart TD A["📋 Template Definition"] --> B["💬 Hidden in DOM"] B --> C["🔍 JavaScript Finds Template"] C --> D["📋 Clone Template Content"] D --> E["🔗 Attach to Visible DOM"] E --> F["👁️ User Sees Content"] G["Login Template"] --> A H["Dashboard Template"] --> A I["Future Templates"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` 將模板想像成應用程式不同部分的藍圖。就像建築師創建一個藍圖並多次使用它,而不是重複繪製相同的房間,我們只需創建一次模板,並根據需要實例化它們。瀏覽器會將這些模板隱藏,直到 JavaScript 將它們激活。 如果你想為網頁創建多個畫面,一種解決方案是為每個要顯示的畫面創建一個 HTML 文件。然而,這種解決方案有一些不便之處: - 切換畫面時需要重新載入整個 HTML,速度可能較慢。 - 在不同畫面之間共享資料很困難。 另一種方法是只使用一個 HTML 文件,並使用 `