近幾年的網頁開發生態裡,HTMX 這類強調後端渲染的框架悄悄累積了不少關注度。它某種程度上是對「前後端分離才是正道」的反動,值得拆開來看看背後的邏輯。
前後端分離帶來的代價
前後端分離確實有其優勢:前端專注使用者體驗、後端專注商業邏輯、API 可以服務多種客戶端、水平擴展也比較直觀。
但實際做下來,代價也不小:
- 要同時維護兩個獨立的程式碼庫
- 狀態管理的複雜度往往遠超業務本身的複雜度
- 新人進入門檻明顯拉高
- 建置與部署流程多了好幾層
- 效能調校要在前後端各自處理一遍
對許多規模不大的專案來說,這些成本其實不太划算。
HTMX 的做法
HTMX 的核心概念很直接:把原本要用 JavaScript 才能做的互動,直接寫成 HTML 屬性。
引入方式
最快的方式是走 CDN,加一行進 <head> 就行:
1 | <script src="https://unpkg.com/htmx.org@2.0.3"></script> |
正式環境建議改用 npm 安裝或自行托管,避免依賴第三方 CDN;若仍走 CDN,可從 htmx.org 官方文件 取得帶 integrity hash 的完整標籤。
也可以用 npm 安裝:
1 | npm install htmx.org |
基本語法
1 | <button hx-post="/submit" |
這三個屬性做的事:hx-post 指定送出 POST 請求的 URL,hx-target 指定要更新哪個 DOM 元素,hx-swap 指定怎麼替換(outerHTML 代表整個目標元素都被替換掉)。
關鍵在伺服器端:HTMX 期望伺服器回傳的是 HTML fragment,不是 JSON。後端直接吐一段 HTML,HTMX 把它插進指定位置,整個流程不需要任何 JavaScript。
以 Python/Flask 為例:
1 |
|
主要優勢
開發效率:省去前端狀態同步的那層工作。在簡單的 CRUD 情境下,不需要在 API response 和前端狀態之間來回對應。
前端資源:HTMX 本身壓縮後約 14KB,沒有額外的 runtime。對比 React 加上狀態管理套件,差距相當明顯。
學習曲線:懂 HTML 的開發者基本上看幾個範例就能上手,不需要先學 JSX、hooks 或 reactive 的概念。
為什麼現在開始受到重視?
幾個背景因素加在一起:
複雜度的反彈:不少開發者做過幾個 SPA 後意識到,並不是每個專案都需要那個複雜度。一個內部管理系統、一個 blog、一個資料檢索介面,根本用不到完整的前端框架。
效能壓力:Core Web Vitals 變成 Google 排名因素之後,初始載入速度被正式量化。後端渲染天生就在這一塊佔優勢。
實用主義:選「最適合這個專案的技術」而不是「現在最流行的技術」,這種態度在社群裡越來越普遍。
適合的使用場景
HTMX 比較適合:
- 內部管理系統
- 資料導向的應用程式(報表、搜尋、篩選)
- 需要 SEO 的公開內容網站
- 規模較小、需要快速交付的專案
- 後端開發者想自己包辦前端互動的情境
反過來,如果專案需要高度複雜的前端狀態(例如即時協作、複雜的動畫流程、大量的離線操作),HTMX 就不是合適的工具。
取捨
HTMX 不是要取代 React 或 Vue,而是在兩者之間補了一個位置——比純 HTML 表單靈活,比完整 SPA 框架輕。
評估要不要引入時,幾個問題值得先想清楚:專案的互動複雜度到底在哪裡?團隊後端能力強還是前端能力強?部署環境能不能配合後端渲染的架構?這些答案比技術本身更能決定 HTMX 是不是對的選擇。




