本指南的目的是:
值得注意的是 Intercooler 的目標與 htmx 的做法之間的方法差異。
Intercooler 嘗試為其大部分功能提供自訂 HTML 屬性。這在其較長的屬性列表中很明顯,其中許多屬性可以描述為便利或以客戶端為中心。
htmx 遵循保持核心小的做法,使用一組較小的可用屬性,這些屬性主要集中在內容載入和交換上。
此功能主要透過兩種方式增強:
擴展。htmx 擴展框架允許自訂擴展/外掛程式以實現特定功能。一個例子是 Intercooler 中內建的依賴機制,該機制不存在於 htmx 核心中,但可透過擴展獲得。還有其他擴展可以啟用 Intercooler 無法開箱即用的新行為,例如 preload
擴展
將 htmx 事件系統與原生 JavaScript、alpine.js 或 hyperscript 結合使用。Hyperscript 是一種小型、開放的腳本語言,旨在嵌入 HTML 中,靈感來自 HyperTalk,並且是 htmx 的配套專案。
htmx 還包含 Intercooler 中不存在的功能。這不屬於本指南的範圍。
最後,值得注意的是,這仍然是一項正在進行的工作,並且隨著時間的推移可能會發生變化。
本指南的其餘部分以表格的形式佈局,每個表格都嘗試將 Intercooler 的以下常見功能區域對應到等效的 htmx:
注意:對於某些 Intercooler 屬性(大多數是特定於客戶端的屬性,例如 ic-action 和相關屬性),沒有直接的 htmx 等效項。相反,有一種小型、富有表現力的語言可用,稱為 hyperscript(請參閱 http://hyperscript.org),它旨在嵌入 HTML 中,並作為 htmx 的無縫夥伴。它允許您以更靈活和開放的方式實現與某些以客戶端為中心的 Intercooler 屬性相同的行為。
請參閱 關於 hyperscript 的 htmx 文件,了解實際範例以及更多關於 hyperscript 背後的哲學。
Intercooler | htmx |
---|---|
ic-request | 無。使用 HX-Request 標頭 |
_method | 無。使用 method-override 擴展及其提供的 X-HTTP-Method-Override 標頭 |
ic-element-id | 無 |
ic-element-name | 無 |
ic-target-id | 無。使用 HX-Target 標頭 |
ic-trigger-id | 無。使用 HX-Trigger 標頭 |
ic-trigger-name | 無。使用 HX-Trigger-Name 標頭 |
ic-current-url | 無。使用 HX-Current-URL 標頭 |
ic-prompt-value | 無。使用 HX-Prompt 標頭 |
Intercooler | htmx |
---|---|
X-IC-Request | HX-Request |
X-HTTP-Method-Override | X-HTTP-Method-Override |
Intercooler | htmx |
---|---|
X-IC-Trigger | HX-Trigger 、HX-Trigger-After-Settle 、HX-Trigger-After-Swap 。請參閱文件以取得更多詳細資訊 |
X-IC-Refresh | HX-Refresh |
X-IC-Redirect | HX-Redirect |
X-IC-Script | 無。不存在直接等效的功能 (待定) |
X-IC-CancelPolling | 無。使用 HTTP 回應代碼 286 來取消輪詢。 |
X-IC-ResumePolling | 無。不存在直接等效的功能 |
X-IC-SetPollInterval | 無。如果使用載入輪詢,請回應包含不同載入間隔的內容。 |
X-IC-Open | 無。不存在直接等效的功能 (待定) |
X-IC-PushURL | HX-Push |
X-IC-Remove | 無。不存在直接等效的功能 (待定) |
X-IC-Title | 無。不存在直接等效的功能 (待定) |
X-IC-Title-Encoded | 無。不存在直接等效的功能 (待定) |
X-IC-Set-Local-Vars | 無。不存在直接等效的功能 (待定) |
注意:所有的 htmx 事件 都會以駝峰式 (Camel case) 和烤肉串式 (Kebab case) 兩種形式觸發。
Intercooler | htmx |
---|---|
log.ic | 無。可透過 htmx.logger 達到相同效果。請參閱 事件 & 日誌 文件 |
beforeAjaxSend.ic | htmx:configRequest |
beforeHeaders.ic | 無。不存在直接等效的功能 (待定) |
afterHeaders.ic | 無。不存在直接等效的功能 (待定) |
beforeSend.ic | htmx:beforeRequest |
success.ic | htmx:afterOnLoad |
after.success.ic | 近似等效:htmx:beforeSwap |
error.ic | htmx:sendError 或 htmx:sseError 或 htmx:responseError 或 htmx:swapError 或 htmx:onLoadError (待確認) |
complete.ic | htmx:afterRequest |
onPoll.ic | 沒有直接等效的事件。當使用 載入輪詢時,可以使用 [htmx:load 事件]。 |
handle.onpopstate.ic | htmx:historyRestore (待確認) |
elementAdded.ic | htmx:load |
pushUrl.ic | 待定 |
beforeHistorySnapshot.ic | htmx:beforeHistorySave |
Intercooler | htmx |
---|---|
Intercooler.refresh(eltOrPath) | PathDeps.refresh() (需要 path-deps 擴充功能) |
Intercooler.triggerRequest(elt, handler) | htmx.trigger() |
Intercooler.processNodes(elt) | htmx.process() |
Intercooler.closestAttrValue(elt, attr) | htmx.closest() 可以搭配任何選擇器使用 |
Intercooler.verbFor(elt) | 無。不存在直接等效的功能 (待定) |
Intercooler.isDependent(elt1, elt2) | 無。不存在直接等效的功能 (待定) |
Intercooler.getTarget(elt1) | 無。不存在直接等效的功能 (待定) |
Intercooler.processHeaders(elt, xhr) | 無。不存在直接等效的功能 (待定) |
Intercooler.ready(func(elt)) | htmx.onLoad() |
LeadDyno.startPolling(elt) | 無。不存在直接等效的功能 (待定) |
LeadDyno.stopPolling(elt) | 無。不存在直接等效的功能 (待定) |
Intercooler | htmx |
---|---|
<meta name="intercoolerjs:use-data-prefix" content="true"/> | 無。您可以直接使用 data- 前綴,而無需指定 meta 標籤。htmx 會自動識別像這樣的 htmx 屬性:<a data-hx-post="/click">點我!</a> |
<meta name="intercoolerjs:use-actual-http-method" content="true"/> | 無。預設情況下,htmx 會發送實際的 http 方法。您可以透過 method-override 擴充功能 將所有非 GET 請求的動詞更改為 POST。 |