Разработчик с десятилетиями опыта веб-разработки, от PHP 3.0 до Python, Perl и шаблонов Django, недавно вернулся к веб-разработке на Zig. Создание бэкендов с zio и Dusty убедило его, что арена-аллокаторы и comptime в Zig делают веб-разработку практичной, а htmx или Datastar позволяют создавать SPA без JavaScript и TypeScript.
Не хватало системы шаблонов, отвечающей четырём требованиям: безопасность типов на этапе компиляции, высокая скорость без выделения памяти и с прямой записью в std.Io.Writer, экранирование всех входных данных по умолчанию для защиты от XSS и синтаксис, который всё ещё напоминает написание HTML. Ни один существующий вариант не удовлетворял всем требованиям. Ziex, с подходом, вдохновлённым JSX, предлагал полезные идеи, но ориентирован на WASM, что не подходило автору. Templ из Go дал самую понятную модель.
Результат — zt, адаптация Templ для Zig. Шаблоны разбираются и транспилируются в Zig во время zig build, поэтому они могут импортировать код приложения, а код приложения может импортировать их. Параметры полностью типизированы, а ошибки рендеринга выявляются на этапе компиляции. Сгенерированный код просто пишет в std.Io.Writer, будь то сокет или буфер.
Использование простое. Шаблоны объявляются ключевым словом templ, могут вкладывать компоненты через @children и принимать типизированные параметры, например необязательные записи пользователя. Рендеринг можно вызывать напрямую или через вспомогательную функцию render из Dusty для HTML-ответов.
Источник: Hacker News · Сводку подготовил HeadlinesBriefing