Un développeur fort de plusieurs décennies d'expérience web, de PHP 3.0 à Python, Perl et aux templates Django, est récemment revenu au développement web avec Zig. La création de backends avec zio et Dusty l'a convaincu que les allocateurs d'arène et le comptime de Zig rendent le travail web pratique, et que htmx ou Datastar permettent de créer des SPA sans toucher à JavaScript ni TypeScript.
Il manquait un système de templates répondant à quatre exigences : la sûreté de type à la compilation, la rapidité sans allocation avec écriture directe dans std.Io.Writer, l'échappement de toutes les entrées par défaut pour prévenir les XSS, et une syntaxe qui ressemble encore à de l'écriture HTML. Aucune option existante ne satisfaisait toutes ces exigences. Ziex, avec son approche inspirée de JSX, offrait des idées utiles, mais il cible WASM, ce qui ne convenait pas aux besoins de l'auteur. Templ, de Go, fournissait le modèle le plus clair.
Le résultat est zt, une adaptation de Templ en Zig. Les templates sont analysés et transpilés en Zig lors de zig build, ils peuvent donc importer le code de l'application et le code de l'application peut les importer. Les paramètres sont entièrement typés et les erreurs de rendu apparaissent à la compilation. Le code généré écrit simplement dans un std.Io.Writer, qu'il s'agisse d'un socket ou d'un tampon.
L'utilisation est directe. Les templates se déclarent avec le mot-clé templ, peuvent imbriquer des composants via @children et acceptent des paramètres typés, comme des enregistrements utilisateur optionnels. Le rendu peut être appelé directement ou via la fonction render de Dusty pour les réponses HTML.
Source: Hacker News · Résumé par HeadlinesBriefing