HTMX - 扩展



HTMX 扩展用于操作此库的行为,您可以在 JavaScript 中定义您的扩展,并通过 **hx-ext** 属性使用该扩展。

如何使用扩展?

在 HTMX 中使用扩展非常简单,您需要遵循两个步骤。

  • **步骤 1:**您需要在 head 元素中添加一个扩展,这会将其添加到 htmx 扩展注册表中。
  • **步骤 2:**现在您必须在元素上使用 **hx-ext** 属性来使用它。

HTMX 扩展示例

在此示例中,我们将向您展示如何通过 **hx-ext** 属性使用预定义的扩展。

<script src="/tutorialspoint/htmx/debug.js" defer></script>

<div hx-ext="debug">
    <button hx-post="/content">Will Debug Code</button>
</div>

HTMX 忽略扩展

如果您在任何元素上使用了 **hx-ext** 属性,那么它将与该元素内部的所有子元素一起应用于 DOM 节点。有一种方法可以忽略扩展 htmx,假设您不希望在某些特定的子元素上应用您定义的扩展,那么您必须使用 **ignore:** 关键字来阻止其使用。

<script src="/tutorialspoint/htmx/debug.js" defer></script>

<div hx-ext="debug">
    <button hx-post="/content">Will Debug Code</button>
    <button hx-post="/content" hx-ext="ignore:debug">Will Not Debug</button>
</div>

如何定义扩展?

要定义扩展,您需要使用 **htmx.defineExtension()** 函数,并且扩展始终应在单独的文件中创建。不要尝试在内联 **<script>** 标记中定义扩展。

<script>
    (function(){
        htmx.defineExtension('my-ext', {
            onEvent : function(name, evt) {
                console.log("Fired event: " + name, evt);
            }
        })
    })()
</script>

定义扩展的规则

如您在上面的代码中看到的,我们已经用最少的精力和代码定义了一个扩展。因此,在定义扩展时,您需要维护一些内容。

  • **扩展命名:**扩展的名称应使用短横线分隔,并且应足够短且易于理解。
  • **覆盖默认扩展:**扩展可以覆盖默认扩展点以添加或更改功能。

扩展覆盖默认扩展点

{
  init: function(api) { return null },
  getSelectors: function() { return null },
  onEvent: function(name, evt) { return true },
  transformResponse: function(text, xhr, elt) { return text },
  isInlineSwap: function(swapStyle) { return false },
  handleSwap: function(swapStyle, target, fragment, settleInfo) { return false },
  encodeParameters: function(xhr, parameters, elt) { return null }
}
广告