返回目录
开源项目开发者工具类新手

htmx - high power tools for HTML(用 HTML 属性直接驱动 AJAX 与实时通信的前端工具库)

htmx 是一套面向 HTML 的高能力工具库,允许开发者直接通过 HTML 属性使用 AJAX、CSS Transitions、WebSockets 和 Server Sent Events,从而以超文本的简洁方式构建现代用户界面。它体积小(约 14k min.gz'd)、无依赖且可扩展,是 intercooler.js 的继任者,可通过 CDN 或 npm(htmx.org)引入。

0 次阅读2026/09/18 发布
htmx - high power tools for HTML(用 HTML 属性直接驱动 AJAX 与实时通信的前端工具库) 来源图片

社区作者 · zZz

它解决什么问题

htmx(</> htmx - high power tools for HTML)是一个让 HTML 本身具备现代交互能力的前端库。它允许你在 HTML 中使用属性直接访问 AJAX、CSS Transitions、WebSockets 和 Server Sent Events,用超文本的简洁与力量构建现代用户界面。项目自述其体积很小(约 14k min.gz'd)、无依赖(dependency-free)且可扩展(extendable)。

【设计动机】 项目在 README 中提出四个疑问作为动机:

通过移除这些人为限制,htmx 让 HTML 作为超文本变得完整。

  1. 为什么只有 <a> 和 <form> 才能发起 HTTP 请求?
  2. 为什么只有 click 和 submit 事件才能触发它们?
  3. 为什么只有 GET 和 POST 可用?
  4. 为什么只能替换整个屏幕?

【核心用法示例】 README 给出的快速开始代码为: <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/htmx.min.js" integrity="sha384-H5SrcfygHmAuTDZphMHqBJLc3FhssKjG7w/CeCpFReSfwBWDTKpkzPP8c+cLsK+V" crossorigin="anonymous"></script> <!

-- have a button POST a click via AJAX --> <button hx-post="/clicked" hx-swap="outerHTML">Click Me</button> 其中 hx-post 与 hx-swap 属性告诉 htmx:当用户点击该按钮时,向 /clicked 发起 AJAX 请求,并用响应内容替换整个按钮。

【项目关系与资源】 htmx 是 intercooler.js 的继任者。官方站点与文档位于 https://htmx.org 与 https://htmx.org/docs。项目欢迎贡献,并提供了贡献指南(contribution guidelines),也提供赞助(sponsor)渠道。

【本地开发(hacking guide)】 在本地开发 htmx 需要先安装开发依赖,运行 npm install;然后在项目根目录启动一个 Web 服务器,最简便的方式是 npx serve。随后访问 http://0.0.0.0:3000/test/ 即可运行测试套件。之后可以修改 /src/htmx.js 添加功能,并在 /test 下相应区域补充测试。测试目录结构包括:

htmx 使用 mocha 测试框架、chai 断言框架,以及 sinon 来模拟(mock)AJAX 请求。

  • /test/index.html:根测试页,其他所有测试都从此页引入
  • /test/attributes:针对属性的测试
  • /test/core:核心功能测试
  • /test/core/regressions.js:回归测试
  • /test/ext:扩展测试
  • /test/manual:无法自动化的人工测试

【配图说明】 配图 1 为 htmx 的官方 Logo(</> htmx),来源为项目仓库 www/static/img/htmx_logo.1.png,用于标识该项目。

【常见问题】

可复制命令
npm 包名混淆:README 明确指出安装时应使用 npm install htmx.org --save

,并提醒存在一个旧的、已损坏的名为 htmx 的包,正确的包名是 htmx.org。

  • 是否需要构建工具:快速开始表明可以直接通过 CDN 引入 dist/htmx.min.js 使用,无需构建步骤。
  • 本地测试如何跑:启动静态服务器后访问 /test/ 路径即可,无需额外测试命令。

【适用对象】 希望以服务端渲染/超文本方式构建交互界面、减少手写 JavaScript 的前后端开发者与全栈工程师;以及从 intercooler.js 迁移的项目维护者。

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

一、通过 CDN 直接引入(无需构建)

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/htmx.min.js" integrity="sha384-H5SrcfygHmAuTDZphMHqBJLc3FhssKjG7w/CeCpFReSfwBWDTKpkzPP8c+cLsK+V" crossorigin="anonymous"></script>

<button hx-post="/clicked" hx-swap="outerHTML">Click Me</button> 含义为:用户点击该按钮时,向 /clicked 发起 AJAX 请求,并用响应替换整个按钮。

  1. 在 HTML 页面中引入脚本:
  2. 在需要交互的元素上使用属性,例如让按钮以 AJAX 方式 POST:

二、通过

可复制命令
npm 安装

步骤 1 · 执行:

可复制命令
npm install htmx.org --save
  1. 注意:存在一个旧的、已损坏的名为 htmx 的包,本项目正确的包名是 htmx.org。

三、本地开发环境准备(hacking guide)

步骤 1 · 安装开发依赖:

可复制命令
npm install

步骤 2 · 在项目根目录启动一个 Web 服务器,最简便方式是:

可复制命令
npx serve
  1. 首次运行/验证测试:在浏览器访问 http://0.0.0.0:3000/test/ 运行测试套件。
  1. 修改源码:编辑 /src/htmx.js 添加功能,然后在 /test 下相应区域补充测试。
  1. 测试目录说明:
  • /test/index.html:根测试页,其他所有测试由此页引入
  • /test/attributes:属性相关测试
  • /test/core:核心功能测试
  • /test/core/regressions.js:回归测试
  • /test/ext:扩展测试
  • /test/manual:无法自动化的人工测试
  1. 测试工具链:mocha(测试框架)、chai(断言框架)、sinon(模拟 AJAX 请求)。

四、常见问题

  • 直接引入 CDN 版本即可使用,无需构建流程。
可复制命令
npm 安装务必使用 htmx.org

,不要使用同名的旧包 htmx。

来源教程配图

</> htmx
配图 1 · </> htmx查看原图

适用场景

在 HTML 元素上通过 hx-post
hx-swap 等属性直接发起 AJAX 请求并局部替换页面片段
以超文本方式构建现代用户界面
减少手写 JavaScript 的交互代码
在 HTML 中直接接入 CSS Transitions
WebSockets 与 Server Sent Events
为服务端渲染(SSR)/多页面应用增加局部更新等现代交互能力
从 intercooler.js 迁移或作为其继任方案继续开发
扩展自定义功能并基于 mocha/chai/sinon 测试体系进行本地开发与回归验证