本指南的目的是:
值得注意 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 | 无。如果使用 加载轮询,响应包含不同加载间隔的内容。 |
X-IC-Open | 无。无直接等效功能存在(待确认) |
X-IC-PushURL | HX-Push |
X-IC-Remove | 无。无直接等效功能存在(待确认) |
X-IC-Title | 无。无直接等效功能存在(待确认) |
X-IC-Title-Encoded | 无。无直接等效功能存在(待确认) |
X-IC-Set-Local-Vars | 无。无直接等效功能存在(待确认) |
注意:所有 htmx 事件 都以驼峰式和短横线式触发。
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 会自动识别这样的 htmx 属性:<a data-hx-post="/click">点击我!</a> |
<meta name="intercoolerjs:use-actual-http-method" content="true"/> | 无。默认情况下 htmx 发送实际的 http 方法。但您可以通过 method-override 扩展 将所有非 GET 请求的动词改为 POST |