HTMX - 配置
HTMX是一个JavaScript库,它使用HTML、AJAX、CSS过渡、WebSockets和服务器发送事件来扩展你的HTML。本指南将向您展示如何为您的项目配置HTMX,涵盖基本和高级设置选项,以确保HTMX能够顺利运行。
HTMX入门
HTMX允许您轻松地为Web应用程序添加交互式功能。首先将HTMX集成到您的项目中,并使用其属性使您的HTML元素具有响应性和动态性。
在您的项目中包含HTMX
要开始使用HTMX,您需要将其包含在您的HTML文件中。为此,您可以查看HTMX - 安装。
验证HTMX激活
页面加载时,HTMX会自动开始工作。您无需执行任何操作即可进行设置。
全局配置
HTMX允许您设置应用于页面上所有HTMX元素的全局配置选项。您可以使用htmx.config对象设置全局配置。
// Enable template fragments htmx.config.useTemplateFragments = true; // Set default swap style htmx.config.defaultSwapStyle = "outerHTML"; // Set default swap delay (in milliseconds) htmx.config.defaultSwapDelay = 100;
以下是一些常用的全局配置选项
- useTemplateFragments:如果设置为true,HTMX将使用模板标签解析内容
- defaultSwapStyle:设置所有元素的默认交换样式(例如,“innerHTML”、“outerHTML”)
- defaultSwapDelay:设置交换内容之前的默认延迟(以毫秒为单位)。
- timeout:设置AJAX请求的默认超时时间(以毫秒为单位)。
- historyCacheSize 设置要缓存的历史记录条目数。
按元素覆盖配置
虽然全局配置适用于所有HTMX元素,但您也可以使用属性配置单个元素。
以下是一些常用的特定于元素的属性
- hx-trigger:指定触发请求的事件。
- hx-target:指定将内容交换到的目标元素
- hx-swap:定义如何交换响应内容
- hx-boost:将普通锚点和表单转换为AJAX请求
示例
<button hx-post="/submit" hx-trigger="click" hx-target="#result" hx-swap="outerHTML"> Submit </button>
此按钮将使用“outerHTML”交换,而不管全局defaultSwapStyle设置。
高级配置选项
HTMX还允许使用JavaScript进行更高级的配置。这些设置使您可以根据您的特定需求调整HTMX。
示例
htmx.config.historyCacheSize = 20; htmx.config.defaultSettleDelay = 100; htmx.config.globalViewTransitions = true; htmx.config.getCacheBusterParam = true;
此配置
- 增加了历史缓存大小
- 设置默认的settle延迟以获得更流畅的过渡
- 全局启用视图转换API
- 向GET请求添加缓存清除参数
自定义标头配置
您可以向所有HTMX请求添加自定义标头。
htmx.config.headers = { 'My-Custom-Header': 'my-custom-value' };
调试配置
为了帮助调试,您可以记录当前配置。
console.log(JSON.stringify(htmx.config, null, 2));
这将以可读格式输出整个配置对象。
动态配置更改
您可以根据用户操作或应用程序状态动态更改配置。
document.getElementById('toggleHistory').addEventListener('click', function() { htmx.config.historyEnabled = !htmx.config.historyEnabled; console.log("History is now " + (htmx.config.historyEnabled ? "enabled" : "disabled")); });
响应处理配置
HTMX允许您控制如何在网页上处理服务器响应。您可以指定响应内容的存放位置以及插入方式。
示例
<button hx-get="/api/data" hx-target="#result" hx-swap="innerHTML" hx-select="#data"> Load Data </button>
单击此按钮时,它将从“/api/data”获取数据,选择响应的“#data”部分,并将其插入到“#result”元素中,替换其内部HTML。
“hx-swap”属性还有其他选项,例如“outerHTML”、“beforebegin”和“afterend”,用于不同的插入方法。
配置HTMX
您可以通过几种不同的方式配置HTMX,无论是使用JavaScript还是直接向HTML添加属性。以下是用于设置HTMX以适应您的项目的不同配置选项的概述
配置变量 | 信息 |
---|---|
htmx.config.historyEnabled | 默认为true,主要用于测试。 |
htmx.config.historyCacheSize | 默认为10。 |
htmx.config.refreshOnHistoryMiss | 默认为false。如果为true,如果缺少历史记录,HTMX将刷新页面而不是使用AJAX。 |
htmx.config.defaultSwapStyle | 默认为innerHTML。 |
htmx.config.defaultSwapDelay | 默认为0毫秒。 |
htmx.config.defaultSettleDelay | 默认为20毫秒。 |
htmx.config.includeIndicatorStyles | 默认为true,控制是否加载指示器样式。 |
htmx.config.indicatorClass | 默认为htmx-indicator。 |
htmx.config.requestClass | 默认为htmx-request。 |
htmx.config.addedClass | 默认为htmx-added。 |
htmx.config.settlingClass | 默认为htmx-settling。 |
htmx.config.swappingClass | 默认为htmx-swapping。 |
htmx.config.allowEval | 默认为true,可以禁用某些功能的eval使用。 |
htmx.config.allowScriptTags | 默认为true,确定HTMX是否处理新内容中的脚本标签。 |
htmx.config.inlineScriptNonce | 默认为空,这意味着不会向内联脚本添加nonce。 |
htmx.config.attributesToSettle | 默认为["class", "style", "width", "height"],在稳定阶段要稳定的属性。 |
htmx.config.inlineStyleNonce | 默认为空,这意味着不会向内联样式添加nonce。 |
htmx.config.useTemplateFragments | 默认为false,使用HTML模板标签进行内容解析(与IE11不兼容)。 |
htmx.config.wsReconnectDelay | 默认为全抖动。 |
htmx.config.wsBinaryType | 默认为blob,通过WebSocket接收的二进制数据的类型。 |
htmx.config.disableSelector | 默认为[hx-disable],[data-hx-disable],HTMX忽略具有此属性的元素。 |
htmx.config.withCredentials | 默认为false,控制带有凭据的跨站点请求。 |
htmx.config.timeout | 默认为0毫秒,请求自动取消之前的时间。 |
htmx.config.scrollBehavior | 默认为smooth,滚动到顶部或像普通链接一样。 |
htmx.config.defaultFocusScroll | 默认为false,确定是否应将焦点元素滚动到视图中。 |
htmx.config.getCacheBusterParam | 默认为false,如果为true,则将缓存清除参数附加到GET请求。 |
htmx.config.globalViewTransitions | 默认为false,如果为true,则对新内容使用视图转换API。 |
htmx.config.methodsThatUseUrlParams | 默认为["get", "delete"],使用URL参数而不是请求正文的方法。 |
htmx.config.selfRequestsOnly | 默认为true,只允许对同一域进行AJAX请求。 |
htmx.config.ignoreTitle | 默认为false,如果为true,HTMX将不会更新文档标题。 |
htmx.config.disableInheritance | 禁用属性继承,可以被hx-inherit属性覆盖。 |
htmx.config.scrollIntoViewOnBoost | 默认为true,将增强元素的目标滚动到视图中。 |
htmx.config.triggerSpecsCache | 默认为null,已评估触发器规范的缓存,以提高性能。 |
htmx.config.responseHandling | 配置HTMX如何处理不同的响应状态代码。 |
htmx.config.allowNestedOobSwaps | 默认为true,允许处理嵌套元素中的OOB交换。 |
广告