HTMX - 配置



HTMX是一個JavaScript庫,它使用HTMLAJAXCSS過渡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交換。
廣告