Что это такое
htmx — библиотека для людей, которым близка идея: сервер уже умеет отдавать HTML, а интерфейс не обязан превращаться в большое клиентское приложение ради каждой интерактивной детали. Она добавляет к обычной разметке атрибуты `hx-*`, через которые любой элемент может отправлять HTTP-запрос, получать HTML-фрагмент и заменять часть страницы.
Проект вырос из intercooler.js и стал заметным голосом в возвращении к hypermedia-подходу. Его мотивация очень конкретная: почему только ссылки и формы должны отправлять запросы, почему только `click` и `submit` должны запускать действия, почему ответ обязан менять весь экран? htmx снимает эти ограничения, но оставляет HTML главным форматом взаимодействия.
Что внутри репозитория
Внутри — компактная JavaScript-библиотека без зависимостей, документация, расширения и тесты. Она работает с AJAX, CSS-переходами, WebSocket, Server-Sent Events и разными стратегиями замены DOM. Важная часть — не размер кода, а модель: сервер возвращает готовую разметку, а клиент аккуратно вставляет ее в нужное место.
Кнопка с частичной заменой HTML
Пример показывает главный прием htmx: кнопка отправляет `POST` на сервер, а HTML-ответ заменяет саму кнопку. Не нужен отдельный клиентский обработчик, состояние остается на стороне сервера.
<button hx-post="/clicked" hx-swap="outerHTML">
Нажать
</button>
Где полезен
htmx хорошо подходит для административных панелей, личных кабинетов, форм, фильтров, таблиц, комментариев и интерфейсов, где серверная модель уже сильная. Он особенно приятен в Laravel, Rails, Django, Phoenix и других фреймворках, где удобно рендерить HTML-фрагменты.
Сильные стороны и ограничения
Сильная сторона htmx — простота и честная архитектура: меньше клиентского состояния, меньше сборки, меньше кода ради базовой интерактивности. Ограничение тоже понятно: сложные офлайн-приложения, графические редакторы и интерфейсы с большим локальным состоянием могут требовать React/Vue/Svelte или отдельного клиентского слоя.