
HTMX - 配置
HTMX是一個JavaScript庫,它使用HTML、AJAX、CSS過渡、WebSockets和伺服器傳送事件來擴充套件你的HTML。本指南將向您展示如何為您的專案配置HTMX,涵蓋基本和高階設定選項,以確保HTMX能夠順利執行。
HTMX入門
HTMX允許您輕鬆地為Web應用程式新增互動式功能。首先將HTMX整合到您的專案中,並使用其屬性使您的HTML元素具有響應性和動態性。
在您的專案中包含HTMX
要開始使用HTMX,您需要將其包含在您的HTML檔案中。為此,您可以檢視HTMX - 安裝。
驗證HTMX啟用
頁面載入時,HTMX會自動開始工作。您無需執行任何操作即可進行設定。
全域性配置
HTMX允許您設定應用於頁面上所有HTMX元素的全域性配置選項。您可以使用htmx.config物件設定全域性配置。
// Enable template fragments htmx.config.useTemplateFragments = true; // Set default swap style htmx.config.defaultSwapStyle = "outerHTML"; // Set default swap delay (in milliseconds) htmx.config.defaultSwapDelay = 100;
以下是一些常用的全域性配置選項
- useTemplateFragments:如果設定為true,HTMX將使用模板標籤解析內容
- defaultSwapStyle:設定所有元素的預設交換樣式(例如,“innerHTML”、“outerHTML”)
- defaultSwapDelay:設定交換內容之前的預設延遲(以毫秒為單位)。
- timeout:設定AJAX請求的預設超時時間(以毫秒為單位)。
- historyCacheSize 設定要快取的歷史記錄條目數。
按元素覆蓋配置
雖然全域性配置適用於所有HTMX元素,但您也可以使用屬性配置單個元素。
以下是一些常用的特定於元素的屬性
- hx-trigger:指定觸發請求的事件。
- hx-target:指定將內容交換到的目標元素
- hx-swap:定義如何交換響應內容
- hx-boost:將普通錨點和表單轉換為AJAX請求
示例
<button hx-post="/submit" hx-trigger="click" hx-target="#result" hx-swap="outerHTML"> Submit </button>
此按鈕將使用“outerHTML”交換,而不管全域性defaultSwapStyle設定。
高階配置選項
HTMX還允許使用JavaScript進行更高階的配置。這些設定使您可以根據您的特定需求調整HTMX。
示例
htmx.config.historyCacheSize = 20; htmx.config.defaultSettleDelay = 100; htmx.config.globalViewTransitions = true; htmx.config.getCacheBusterParam = true;
此配置
- 增加了歷史快取大小
- 設定預設的settle延遲以獲得更流暢的過渡
- 全域性啟用檢視轉換API
- 向GET請求新增快取清除引數
自定義標頭配置
您可以向所有HTMX請求新增自定義標頭。
htmx.config.headers = { 'My-Custom-Header': 'my-custom-value' };
除錯配置
為了幫助除錯,您可以記錄當前配置。
console.log(JSON.stringify(htmx.config, null, 2));
這將以可讀格式輸出整個配置物件。
動態配置更改
您可以根據使用者操作或應用程式狀態動態更改配置。
document.getElementById('toggleHistory').addEventListener('click', function() { htmx.config.historyEnabled = !htmx.config.historyEnabled; console.log("History is now " + (htmx.config.historyEnabled ? "enabled" : "disabled")); });
響應處理配置
HTMX允許您控制如何在網頁上處理伺服器響應。您可以指定響應內容的存放位置以及插入方式。
示例
<button hx-get="/api/data" hx-target="#result" hx-swap="innerHTML" hx-select="#data"> Load Data </button>
單擊此按鈕時,它將從“/api/data”獲取資料,選擇響應的“#data”部分,並將其插入到“#result”元素中,替換其內部HTML。
“hx-swap”屬性還有其他選項,例如“outerHTML”、“beforebegin”和“afterend”,用於不同的插入方法。
配置HTMX
您可以通過幾種不同的方式配置HTMX,無論是使用JavaScript還是直接向HTML新增屬性。以下是用於設定HTMX以適應您的專案的不同配置選項的概述
配置變數 | 資訊 |
---|---|
htmx.config.historyEnabled | 預設為true,主要用於測試。 |
htmx.config.historyCacheSize | 預設為10。 |
htmx.config.refreshOnHistoryMiss | 預設為false。如果為true,如果缺少歷史記錄,HTMX將重新整理頁面而不是使用AJAX。 |
htmx.config.defaultSwapStyle | 預設為innerHTML。 |
htmx.config.defaultSwapDelay | 預設為0毫秒。 |
htmx.config.defaultSettleDelay | 預設為20毫秒。 |
htmx.config.includeIndicatorStyles | 預設為true,控制是否載入指示器樣式。 |
htmx.config.indicatorClass | 預設為htmx-indicator。 |
htmx.config.requestClass | 預設為htmx-request。 |
htmx.config.addedClass | 預設為htmx-added。 |
htmx.config.settlingClass | 預設為htmx-settling。 |
htmx.config.swappingClass | 預設為htmx-swapping。 |
htmx.config.allowEval | 預設為true,可以停用某些功能的eval使用。 |
htmx.config.allowScriptTags | 預設為true,確定HTMX是否處理新內容中的指令碼標籤。 |
htmx.config.inlineScriptNonce | 預設為空,這意味著不會向內聯指令碼新增nonce。 |
htmx.config.attributesToSettle | 預設為["class", "style", "width", "height"],在穩定階段要穩定的屬性。 |
htmx.config.inlineStyleNonce | 預設為空,這意味著不會向內聯樣式新增nonce。 |
htmx.config.useTemplateFragments | 預設為false,使用HTML模板標籤進行內容解析(與IE11不相容)。 |
htmx.config.wsReconnectDelay | 預設為全抖動。 |
htmx.config.wsBinaryType | 預設為blob,透過WebSocket接收的二進位制資料的型別。 |
htmx.config.disableSelector | 預設為[hx-disable],[data-hx-disable],HTMX忽略具有此屬性的元素。 |
htmx.config.withCredentials | 預設為false,控制帶有憑據的跨站點請求。 |
htmx.config.timeout | 預設為0毫秒,請求自動取消之前的時間。 |
htmx.config.scrollBehavior | 預設為smooth,滾動到頂部或像普通連結一樣。 |
htmx.config.defaultFocusScroll | 預設為false,確定是否應將焦點元素滾動到檢視中。 |
htmx.config.getCacheBusterParam | 預設為false,如果為true,則將快取清除引數附加到GET請求。 |
htmx.config.globalViewTransitions | 預設為false,如果為true,則對新內容使用檢視轉換API。 |
htmx.config.methodsThatUseUrlParams | 預設為["get", "delete"],使用URL引數而不是請求正文的方法。 |
htmx.config.selfRequestsOnly | 預設為true,只允許對同一域進行AJAX請求。 |
htmx.config.ignoreTitle | 預設為false,如果為true,HTMX將不會更新文件標題。 |
htmx.config.disableInheritance | 停用屬性繼承,可以被hx-inherit屬性覆蓋。 |
htmx.config.scrollIntoViewOnBoost | 預設為true,將增強元素的目標滾動到檢視中。 |
htmx.config.triggerSpecsCache | 預設為null,已評估觸發器規範的快取,以提高效能。 |
htmx.config.responseHandling | 配置HTMX如何處理不同的響應狀態程式碼。 |
htmx.config.allowNestedOobSwaps | 預設為true,允許處理巢狀元素中的OOB交換。 |