返回筆記列表

2026/05/25

網頁基礎概念與運作原理

本文介紹網頁運作的核心觀念,包含瀏覽器如何向伺服器取得資料、HTML / CSS / JavaScript 的角色、瀏覽器渲染流程,以及 HTTP / HTTPS 的基本概念。

WebBasics

1. 網頁如何運作?

網頁運作建立在 用戶端-伺服器模型 (Client-Server Model) 上。

  • 用戶端 (Client):通常是瀏覽器,例如 Chrome、Edge、Safari、Firefox。
  • 伺服器 (Server):提供網頁資源與後端服務的主機。
  • DNS:負責把網域名稱轉成可連線的 IP 位址。

以下流程以常見的 HTTP/1.1 或 HTTP/2 over TCP 為例。若使用 HTTP/3,底層會改用 QUIC over UDP,而不是 TCP。

sequenceDiagram
    actor User as 使用者
    participant Browser as 瀏覽器
    participant DNS as DNS 伺服器
    participant Server as 網頁伺服器

    User->>Browser: 輸入網址並送出
    Browser->>DNS: 查詢網域對應的 IP 位址
    DNS-->>Browser: 回傳可連線的 IP 位址
    Browser->>Server: 建立 TCP 連線
    Browser->>Server: TLS 握手,建立安全通道
    Browser->>Server: 發送 HTTP Request
    Server-->>Browser: 回傳 HTTP Response 與網頁資源
    Browser->>User: 解析並渲染網頁畫面

用戶端

用戶端通常是瀏覽器。它的工作包含:

  • 發送網路請求。
  • 接收 HTML、CSS、JavaScript、圖片、字型等資源。
  • 解析程式碼與資料。
  • 渲染成使用者看到的畫面。
  • 處理使用者互動。

伺服器

伺服器負責接收請求並回傳資源或資料。它可能負責:

  • 提供靜態檔案,例如 HTML、CSS、JS、圖片。
  • 執行後端程式邏輯。
  • 查詢資料庫。
  • 驗證使用者身分。
  • 回傳 API 結果。

DNS

DNS (Domain Name System) 負責將人類容易記住的網域名稱,例如 example.com,解析成電腦實際連線用的 IP 位址。

實務上,同一個網域可能因地區、時間、CDN 節點、DNS 設定不同,而解析到不同 IP。


2. 網頁建構的三大核心技術

網頁前端主要由三個核心技術組成:

  • HTML:結構與內容
  • CSS:樣式與版面
  • JavaScript:互動與動態邏輯

2.1 HTML:網頁結構與內容

HTML (HyperText Markup Language) 是網頁的結構與內容描述語言。

HTML 透過標籤表示不同內容,例如標題、段落、連結、圖片、表格、表單等。

常見標籤

標籤用途
<h1> ~ <h6>標題
<p>段落
<a>超連結
<img>圖片
<ul> / <ol> / <li>清單
<table>表格
<form>表單
<div> / <span>常用容器
<!doctype html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>網頁範例</title>
  </head>
  <body>
    <h1>首頁標題</h1>
    <p>這是一個簡單的 HTML 段落。</p>
    <a href="https://example.com">造訪網站</a>
  </body>
</html>

2.2 CSS:樣式與版面

CSS (Cascading Style Sheets) 用來控制網頁外觀,例如顏色、字型、間距、排版與動畫。

CSS 由 選擇器 (Selector)宣告區塊 (Declaration Block) 組成。

h1 {
  color: #1a73e8;
  font-size: 24px;
  text-align: center;
}

.highlight {
  background-color: yellow;
  font-weight: bold;
}

常見 CSS 功能

  • 顏色與字型設定
  • 版面配置與間距
  • 動畫與轉場效果
  • 響應式網頁設計

2.3 JavaScript:互動與動態邏輯

JavaScript 是網頁前端最常見的程式語言,用來處理互動、動態內容與非同步資料請求。

JavaScript 是一門多範式語言,支援:

  • 事件驅動
  • 物件導向
  • 函數式寫法
  • 非同步程式設計

常見用途包含:

  • 按鈕點擊事件
  • 表單驗證
  • 動態更新畫面
  • 呼叫 API
  • SPA 單頁應用程式
  • 前端狀態管理
const button = document.querySelector("button");

button.addEventListener("click", () => {
  alert("按鈕已被點擊");
});

3. 瀏覽器渲染流程

瀏覽器取得 HTML、CSS、JavaScript 等資源後,會解析這些內容,並一步步產生畫面。

flowchart TD
    HTML["解析 HTML"] --> DOM["建立 DOM Tree"]
    CSS["解析 CSS"] --> CSSOM["建立 CSSOM Tree"]
    DOM --> RenderTree["合併成 Render Tree"]
    CSSOM --> RenderTree
    RenderTree --> Layout["Layout / Reflow:計算位置與大小"]
    Layout --> Paint["Paint:繪製視覺內容"]
    Paint --> Composite["Composite:圖層合成"]
    Composite --> Display["顯示在螢幕上"]

1. 建立 DOM Tree

瀏覽器解析 HTML,將標籤轉成樹狀結構,也就是 DOM (Document Object Model)。

2. 建立 CSSOM Tree

瀏覽器解析 CSS,建立 CSS 規則的物件模型,之後再與 DOM 搭配計算每個元素的最終樣式。

3. 建立 Render Tree

瀏覽器將 DOM 與 CSSOM 合併,產生實際需要顯示的節點。

例如 display: none 的元素不會出現在 Render Tree 中;但 visibility: hidden 的元素仍會佔據版面空間,只是不會被畫出來。

4. Layout / Reflow

瀏覽器計算每個可見元素的位置與尺寸。

5. Paint

瀏覽器將文字、顏色、邊框、陰影、背景等視覺內容繪製出來。

6. Composite

現代瀏覽器可能會將部分元素提升為獨立圖層,例如動畫元素、固定定位元素或使用特定 CSS 屬性的元素。最後瀏覽器會將多個圖層合成為最終畫面。

實務上,不同瀏覽器引擎細節會不同,上述流程是適合入門理解的簡化模型。


4. HTTP / HTTPS 傳輸協定

瀏覽器與伺服器之間的溝通,主要依靠 HTTP 或 HTTPS。


4.1 HTTP

HTTP (HyperText Transfer Protocol) 是應用層協定,用來讓瀏覽器與伺服器交換 request 與 response。

HTTP 本身不提供加密。若直接使用 HTTP,傳輸內容可能被中間節點觀察或竄改。


4.2 HTTPS

HTTPS 是在 HTTP 與下層傳輸之間加入 TLS 安全層。

TLS 會在連線初期完成:

  • 伺服器身分驗證
  • 金鑰協商
  • 安全通道建立

之後 HTTP request / response 會在加密通道中傳輸,以保護資料的機密性與完整性。


4.3 常見 HTTP Methods

Method用途
GET取得資源
POST新增資料或提交表單
PUT整體更新資源
PATCH部分更新資源
DELETE刪除資源

4.4 常見 HTTP Status Codes

狀態碼分類說明
200 OK2xx 成功請求成功
301 Moved Permanently3xx 重新導向資源永久移動
400 Bad Request4xx 用戶端錯誤請求格式錯誤
401 Unauthorized4xx 用戶端錯誤未通過身分驗證
403 Forbidden4xx 用戶端錯誤沒有存取權限
404 Not Found4xx 用戶端錯誤找不到資源
500 Internal Server Error5xx 伺服器錯誤伺服器內部錯誤

5. 前端與後端的職責分工

現代網頁開發通常分為前端與後端。

項目前端 (Frontend)後端 (Backend)
執行位置使用者的瀏覽器伺服器
主要職責畫面、互動、使用者體驗商業邏輯、資料處理、API、安全性
常見技術HTML, CSS, JavaScript, React, Vue, AngularNode.js, Python, Go, Java, C#, SQL / NoSQL
關注重點介面、效能、相容性、RWD架構、資料庫、權限、穩定性

6. 現代網頁開發進階方向

掌握基礎後,可以往以下方向深入:

  1. HTML 語意化
    使用正確標籤提升可讀性、SEO 與無障礙性。

  2. CSS 版面與響應式設計
    深入 Flexbox、Grid、Media Queries,讓網頁適應不同螢幕尺寸。

  3. JavaScript 非同步程式設計
    學習 Promise、async / await、事件循環、fetch API。

  4. 前端框架與組件化
    學習 React、Vue、Angular 等框架,建立可維護的前端架構。

  5. 版本控制與協作
    使用 Git / GitHub 管理程式碼版本與團隊協作。

  6. 效能優化
    了解 bundle size、lazy loading、cache、Core Web Vitals 等議題。

  7. 安全性基礎
    了解 XSS、CSRF、CORS、HTTPS、Content Security Policy 等常見安全概念。


相關概念延伸閱讀