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 } }