HeadlinesBriefing favicon HeadlinesBriefing.com

htmx 4.0 выпущен: ключевые изменения и миграция

Hacker News •
×

Команда htmx выпустила версию 4.0.0 после 8 месяцев работы. Идея возникла при создании fixi, что привело к более глубокому пониманию API fetch() и асинхронного программирования. JavaScript ранее полагался на XMLHttpRequest из-за проблем обратной совместимости. Случайный контакт с Christian вызвал интерес к потоковой передаче HTML, что привело к переходу на fetch() внутри. С помощью Michael и Alex команда портировала fixi и набор тестов htmx, заново открыв, почему htmx делал многие вещи так, как он делал, и тесно согласовав новую реализацию со старой.

Поведенческие различия между 2.x и 4.x относительно невелики, с продуманными решениями для поддержки вековых веб-сервисов. В частности, 4.0 не помечен как latest на NPM, чтобы не заставлять пользователей, полагающихся на неверсированные CDN, обновляться. Вместо этого 2.x остается latest, а 4.0 остается next до начала 2027 года. Веб-сайт будет ссылаться на 4.0.

Выделяются три основных изменения. Во-первых, наследование атрибутов теперь явное: в htmx 2 такие атрибуты, как hx-confirm, наследовались по умолчанию; в 4.0 необходимо добавить :inherited (например, hx-confirm:inherited). Это самое большое бремя миграции, но инструмент командной строки помогает определить необходимые изменения, и hx-disinherit больше не требуется. Во-вторых, имена событий стандартизированы в формате htmx:phase:action[:sub-action] (например, htmx:before:request вместо htmx:beforeRequest). В-третьих, поддержка истории больше не использует localStorage по умолчанию, что большинство пользователей не заметят. Внутри миграция с XMLHttpRequest на fetch() прозрачна для пользователей.

Дополнительные изменения: большинство событий ошибок сливаются в htmx:error, HTTP-ошибки вызывают htmx:response:error, события htmx:xhr:* удалены, а события htmx:validation:* заменены нативным браузерным валидатором. Проверщик обновлений отмечает старые имена событий в атрибутах hx-on и JavaScript. В целом, htmx 4.0 сохраняет совместимость, модернизируя внутренности и уточняя поведение.

Ключевые сущности: Компании: htmx, fixi | Люди: Christian, Michael, Alex