← Ко всем open source проектам

htmx

bigskysoftware/htmx

htmx — JavaScript-библиотека, которая добавляет AJAX, WebSocket, SSE и частичную замену HTML прямо через атрибуты разметки.

Форки 1,601
Автор bigskysoftware
Язык JavaScript
Лицензия NOASSERTION
Обновлено 2026-06-10

Что это такое

htmx — библиотека для людей, которым близка идея: сервер уже умеет отдавать HTML, а интерфейс не обязан превращаться в большое клиентское приложение ради каждой интерактивной детали. Она добавляет к обычной разметке атрибуты `hx-*`, через которые любой элемент может отправлять HTTP-запрос, получать HTML-фрагмент и заменять часть страницы.

Проект вырос из intercooler.js и стал заметным голосом в возвращении к hypermedia-подходу. Его мотивация очень конкретная: почему только ссылки и формы должны отправлять запросы, почему только `click` и `submit` должны запускать действия, почему ответ обязан менять весь экран? htmx снимает эти ограничения, но оставляет HTML главным форматом взаимодействия.

Что внутри репозитория

Внутри — компактная JavaScript-библиотека без зависимостей, документация, расширения и тесты. Она работает с AJAX, CSS-переходами, WebSocket, Server-Sent Events и разными стратегиями замены DOM. Важная часть — не размер кода, а модель: сервер возвращает готовую разметку, а клиент аккуратно вставляет ее в нужное место.

Кнопка с частичной заменой HTML

Пример показывает главный прием htmx: кнопка отправляет `POST` на сервер, а HTML-ответ заменяет саму кнопку. Не нужен отдельный клиентский обработчик, состояние остается на стороне сервера.

Язык: HTML
<button hx-post="/clicked" hx-swap="outerHTML">
  Нажать
</button>

Где полезен

htmx хорошо подходит для административных панелей, личных кабинетов, форм, фильтров, таблиц, комментариев и интерфейсов, где серверная модель уже сильная. Он особенно приятен в Laravel, Rails, Django, Phoenix и других фреймворках, где удобно рендерить HTML-фрагменты.

Сильные стороны и ограничения

Сильная сторона htmx — простота и честная архитектура: меньше клиентского состояния, меньше сборки, меньше кода ради базовой интерактивности. Ограничение тоже понятно: сложные офлайн-приложения, графические редакторы и интерфейсы с большим локальным состоянием могут требовать React/Vue/Svelte или отдельного клиентского слоя.