このガイドの目的は、
Intercooler の目的と htmx の目的の違いに留意することが重要です。
Intercooler は、ほとんどの機能にカスタム HTML 属性を提供しようとしました。これは、より長い属性リスト(その多くは便宜的なもの、またはクライアント側中心の性質のものと説明できる)に明らかです。
htmx は、コアを小さく保つというアプローチに従っており、利用可能な属性の数は少なく、ほとんどがコンテンツの読み込みと交換に焦点を当てています。
この機能は、主に 2 つの方法で拡張されています。
拡張機能。htmx 拡張機能フレームワークにより、特定の機能を実現するためのカスタム拡張機能/プラグインが可能です。その一例として、Intercooler に組み込まれている依存関係メカニズムがありますが、htmx コアには存在しません。拡張機能 を通じて利用可能です。また、Intercooler ではすぐに利用できなかった新しい動作を可能にする他の拡張機能もあります。例えば、preload
拡張機能
バニラ JavaScript、alpine.js、またはhyperscript を使用した htmx イベントシステム。Hyperscript は、HyperTalk を参考に HTML に埋め込むように設計された、小さくオープンなスクリプト言語であり、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イベントは、キャメルケースとケバブケースの両方で発生します。
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">Click Me!</a> |
<meta name="intercoolerjs:use-actual-http-method" content="true"/> | なし。デフォルトでは、htmxは実際のHTTPメソッドを送信します。ただし、method-override エクステンションを使用して、すべてのGET以外のリクエストの動詞をPOSTに変更できます。 |