Мой эксперимент с HTMX и Astro
Делюсь первым опытом работы с библиотекой htmx. Я создал простой сайт, состоящий из главной страницы с первоначальным набором карточек квартир и 5 кнопок, которые выводят отфильтрованные по количеству комнат квартиры.
Стек: Astro + HTMX + Tailwind
Реализация очень простая:
Соответственно, при выборе нового варианта фильтра, по адресу `/api/cases` выполняется POST-запрос с данными о выбранном варианте.
Индикатором рабты запроса является `<div id='loading'>`. Результат (готовый HTML) выводится внутри `<div id='serch-results'></div>`.
На стороне `api` код выглядит примерно так:
И это все.
Впечатления
Данный подход к созданию веб-приложений скорее не для меня. Реализация через тот же React кажется проще и с большим потенциалом для доработок. Из того, что мне не понравилось:
- Размытие логики приложения. Backend не просто возвращает данные, но также занимается и решением задач фронтенда;
- Необходимость согласования верстки на стороне клиента, и на стороне сервера (в нашем случае это отображение карточек по умолчанию и вывод результатов поиска)
Да, здесь я сам немного усложнил себе задачу, не использовав Page Partials, но их применение в рамках того же Astro в связке с HTMX мне показалось черезчур надуманным.
Но, несмотря на сказанное выше, у меня есть ряд задач, где HTMX подходит идеально: у меня есть несколько старых статичных сайтов и сайтов, реализованных на CMS вроде WordPress. Для них возомжность добавить интерактивности (тем более с использованием Page Partials) является отличной перспективой. Для сайтов, написанных на Next или Astro, я пока что не смог увидеть применения.
P.S. Неожиданная проблема
В данном проекте я подключил View Transitions и это, как окалалось, ломает работу библиотеки HTMX. Стоит вам осуществить переход между страницами, как сайт окончательно превращается в статичный. К счастью, я наткнулся на эту статью, где описано решение: необходимо на страницу с кодом HTXM добавить следующий скрипт