Разработка фронтенда сайта на HTMX

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка фронтенда сайта на HTMX
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Разработка фронтенда сайта на HTMX

HTMX — библиотека, которая возвращает AJAX, WebSocket и Server-Sent Events обратно в HTML-атрибуты. Вы описываете поведение прямо в разметке, сервер отдаёт HTML-фрагменты, браузер вставляет их в нужное место DOM. JavaScript не нужен вообще.

Это не шаг назад — это осознанный выбор архитектуры HATEOAS (Hypermedia as the Engine of Application State), где сервер управляет состоянием, а клиент — только отображает.

Принцип работы

Классический AJAX: сервер → JSON → клиент парсит → обновляет DOM через JS.

HTMX: сервер → HTML-фрагмент → HTMX вставляет в целевой элемент.

<!-- Вместо fetch + JSON + DOM manipulation -->
<button
  hx-post="/cart/add"
  hx-vals='{"product_id": "42"}'
  hx-target="#cart-count"
  hx-swap="innerHTML"
>
  В корзину
</button>

<span id="cart-count">3</span>

Сервер на /cart/add возвращает просто <span>4</span> — и счётчик обновился. Весь JS — это htmx.min.js (14 KB gzip).

Атрибуты и возможности

Атрибут Что делает
hx-get/post/put/delete HTTP-запрос на указанный URL
hx-target CSS-селектор целевого элемента
hx-swap Стратегия замены: innerHTML, outerHTML, beforeend, afterend и др.
hx-trigger Событие-триггер (click, input delay:300ms, revealed)
hx-push-url Обновляет URL в адресной строке
hx-select Выбирает часть ответа для вставки
hx-boost Превращает все ссылки/формы в AJAX-запросы
hx-indicator Элемент-индикатор загрузки
hx-confirm Диалог подтверждения перед запросом
hx-ws WebSocket-соединение
hx-sse Server-Sent Events

Паттерн: таблица с сортировкой и пагинацией

<!-- templates/users/table.html -->
<table id="users-table">
  <thead>
    <tr>
      <th>
        <a
          hx-get="/users?sort=name&order=asc"
          hx-target="#users-table"
          hx-push-url="true"
        >Имя ↕</a>
      </th>
      <th>Email</th>
      <th>Роль</th>
    </tr>
  </thead>
  <tbody>
    {% for user in users %}
    <tr>
      <td>{{ user.name }}</td>
      <td>{{ user.email }}</td>
      <td>{{ user.role }}</td>
    </tr>
    {% endfor %}
  </tbody>
</table>

<div
  hx-get="/users?page={{ next_page }}"
  hx-target="#users-table tbody"
  hx-swap="beforeend"
  hx-trigger="revealed"
>
  <!-- Бесконечная прокрутка: загружается когда элемент появляется в viewport -->
</div>

Серверный обработчик на Laravel:

public function index(Request $request): Response
{
    $users = User::query()
        ->when($request->sort, fn($q) => $q->orderBy($request->sort, $request->order ?? 'asc'))
        ->paginate(20);

    // Если HTMX-запрос — возвращаем только фрагмент таблицы
    if ($request->header('HX-Request')) {
        return response()->view('users.table', compact('users'));
    }

    // Обычный запрос — полная страница
    return response()->view('users.index', compact('users'));
}

Инлайн-редактирование

<tr id="user-42">
  <td>Иван Петров</td>
  <td>[email protected]</td>
  <td>
    <button
      hx-get="/users/42/edit"
      hx-target="#user-42"
      hx-swap="outerHTML"
    >Редактировать</button>
  </td>
</tr>

Сервер на /users/42/edit возвращает <tr> с формой. После сохранения — возвращает обновлённый <tr> с данными. Без единой строки JavaScript.

Интеграция с Alpine.js

HTMX и Alpine.js отлично сочетаются: HTMX управляет сетевыми запросами и обновлением DOM, Alpine.js — локальной интерактивностью (дропдауны, табы, валидация форм):

<div
  x-data="{ open: false }"
  hx-get="/notifications"
  hx-trigger="load"
  hx-target="#notifications-list"
>
  <button @click="open = !open" class="relative">
    Уведомления
    <span id="notifications-count" class="badge">0</span>
  </button>
  <div x-show="open" @click.outside="open = false">
    <ul id="notifications-list"></ul>
  </div>
</div>

WebSocket и SSE для реального времени

<!-- Server-Sent Events: обновление в реальном времени -->
<div hx-sse="connect:/events/prices">
  <span
    hx-sse="swap:price-update"
    hx-target="this"
    hx-swap="innerHTML"
    id="btc-price"
  >Загрузка...</span>
</div>

Сервер отправляет:

event: price-update
data: <span>$67,234</span>

Цена обновляется без polling, без JS-обработчиков.

Сроки реализации

  • Неделя 1: интеграция HTMX в существующий backend (Laravel/Django/Rails/Go), настройка базовых паттернов request/response
  • Неделя 2: CRUD-интерфейсы, пагинация, поиск, сортировка
  • Неделя 3: real-time через SSE/WebSocket, оптимистичные обновления, индикаторы загрузки
  • Неделя 4: тестирование, оптимизация, документация паттернов для команды

Для существующих серверных приложений HTMX позволяет добавить SPA-like поведение без переписывания фронтенда. Это особенно ценно при миграции с классического MPA к интерактивному UI без смены backend-технологии.