本指南的目的是:
值得注意的是,Intercooler 旨在实现的目标与 htmx 的方法存在差异。
Intercooler 试图为其大多数功能提供自定义 HTML 属性。这在其较长的属性列表中显而易见,其中许多属性可以描述为便利性或客户端侧焦点性质的。
htmx 采用的方法是保持核心简小,提供一小组可用的属性,这些属性主要关注内容加载和交换。
这种能力主要通过以下两种方式增强:
Extensions。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 属性的相同行为,但以更灵活和开放的方式。
请参阅 htmx 关于 hyperscript 的文档 以获取实际示例,以及更多关于 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 | 无。如果使用 load polling,响应包含不同加载间隔的内容。 |
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 和 Kebab 命名法触发。
| 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 | 无直接等效。当使用 load polling 时,[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- 前缀而无需指定元标签。htmx 会自动识别这样的 htmx 属性,例如 <a data-hx-post="/click">Click Me!</a> |
<meta name="intercoolerjs:use-actual-http-method" content="true"/> | 无。默认情况下 htmx 发送实际的 HTTP 方法。但是,您可以通过 method-override 扩展 将所有非 GET 请求的动词更改为 POST |