本指南的目的是:
值得注意的是,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 属性(尤其是以客户端为中心的属性)相同的功能,但在更灵活和开放的方式下。
请参阅 htmx 关于 hyperscript 的文档,获取实际示例,以及更多关于 hyperscipt 背后理念的信息。
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 事件 都会以驼峰式和 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 | 没有直接等效项。当使用 负载轮询 时,可以考虑使用 [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 会自动识别类似 <a data-hx-post="/click">Click Me!</a> 这样的 htmx 属性。 |
<meta name="intercoolerjs:use-actual-http-method" content="true"/> | 无。默认情况下,htmx 会发送实际的 HTTP 方法。但是,您可以通过 method-override 扩展 将所有非 GET 请求的动词更改为 POST。 |