HeadlinesBriefing HeadlinesBriefing.com

Typsichere HTML-Templates in Zig: zt

Hacker News •
×

Ein Entwickler mit jahrzehntelanger Web-Erfahrung, von PHP 3.0 über Python, Perl und Django-Templates, ist kürzlich mit Zig zur Webentwicklung zurückgekehrt. Der Aufbau von Backends mit zio und Dusty hat ihn davon überzeugt, dass Arena-Allokatoren und Zigs comptime Webarbeit praktikabel machen und dass htmx oder Datastar SPAs ohne JavaScript oder TypeScript ermöglichen.

Es fehlte ein Template-System, das vier Anforderungen erfüllt: Typsicherheit zur Compilezeit, hohe Geschwindigkeit ohne Allokationen und mit direktem Schreiben in std.Io.Writer, Escaping aller Eingaben standardmäßig zur Verhinderung von XSS sowie eine Syntax, die sich immer noch wie das Schreiben von HTML anfühlt. Keine bestehende Option erfüllte alle. Ziex bot mit seinem JSX-inspirierten Ansatz nützliche Ideen, zielt aber auf WASM ab, was nicht zu den Bedürfnissen des Autors passte. Go's Templ lieferte dann das klarste Modell.

Das Ergebnis ist zt, eine Zig-Adaption von Templ. Templates werden während zig build geparst und nach Zig transpiliert, sodass sie Anwendungscode importieren können und Anwendungscode sie importieren kann. Parameter sind vollständig typisiert, und Renderfehler treten bereits zur Compilezeit auf. Der generierte Code schreibt einfach in einen std.Io.Writer, egal ob es sich um einen Socket oder einen Puffer handelt.

Die Verwendung ist unkompliziert. Templates werden mit dem Schlüsselwort templ deklariert, können Komponenten über @children verschachteln und typisierte Parameter wie optionale Benutzerdatensätze annehmen. Das Rendern kann direkt oder über den render-Helfer von Dusty für HTML-Antworten aufgerufen werden.

Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing