此內容將會變更。
## 前言 {#sec-8f30851140f6} 網頁開發環境正變得日益複雜。儘管 React 或 Vue.js 等前端框架功能強大,但並非所有專案都必需它們。尤其當您只想實現簡單的動態功能時,這些框架可能會帶來不必要的複雜性。 **[[HTMX]]** 正是為了解決此類問題而誕生的**輕量級、以 HTML 為中心的函式庫**。它能與 Django 等伺服器端框架完美整合,讓您輕鬆建構動態網頁應用程式。  ## 什麼是 [[HTMX]]? {#sec-a0108dfea168} HTMX 是一個為簡化動態網頁開發而設計的輕量級 JavaScript 函式庫。它允許您僅透過 HTML 屬性,即可實現 **AJAX**、**WebSocket** 和 **Server-Sent Events (SSE)** 等動態功能,而無需編寫複雜的 JavaScript 程式碼或依賴前端框架。 ## HTMX 的主要 HTML 屬性 {#sec-4ea8e105a73c} * **hx-get**: 向伺服器發送 `GET` 請求。 * **hx-post**: 向伺服器發送 `POST` 請求。 * **hx-swap**: 將伺服器回傳的響應內容插入到頁面的特定部分。 * **hx-trigger**: 根據點擊或滑鼠移動等特定事件觸發操作。 * **hx-target**: 指定接收伺服器回傳內容並進行渲染的特定 HTML 元素。 這些屬性使 HTMX 能與 Django 等**以伺服器為中心的渲染模式**自然結合。 ## Django 模板與 [[HTMX]] 的差異 {#sec-b553d9a1aa9d} ### 1. Django 模板 {#sec-c44ee559797a} * Django 模板在伺服器端渲染 HTML 後,將整個頁面回傳給客戶端。 * 這是傳統的網頁開發方式,頁面會透過重新載入來更新內容。 * 若要添加動態功能,需要直接編寫 JavaScript。 ### 2. Django + HTMX {#sec-c1e9f1e7e591} * 使用 HTMX,您可以實現**無需重新載入頁面即可更新特定部分**的功能。 * Django 視圖只回傳部分 HTML,HTMX 則將其插入到客戶端的特定元素中。 * 無需複雜的 JavaScript 程式碼,也能提供動態的使用者體驗。 ## Django 與 HTMX 的整合範例 {#sec-9a6eada8ca7} ### 基本 Django 視圖程式碼 {#sec-14c13b64e461} ```python from django.shortcuts import render def update_content(request): if request.htmx: return render(request, 'partials/content.html') # 回傳部分 HTML return render(request, 'index.html') # 回傳整個頁面 ``` ### 模板配置 {#sec-677344a74297} #### index.html ```html
此內容將會變更。
新內容將在此處顯示。
``` ### 運作結果 {#sec-8475f6be53ff} 1. 使用者點擊按鈕後,會向 `/update/` URL 發送 `GET` 請求。 2. 伺服器回傳 `partials/content.html` 模板,然後 `