PHP 3.0 から Python、Perl、Django テンプレートまで、数十年の Web 開発経験を持つ開発者が、最近 Zig を使って Web 開発に戻ってきました。zio と Dusty でバックエンドを構築した経験から、アリーアロケータと Zig の comptime によって Web 開発が実用的になり、htmx や Datastar により JavaScript や TypeScript に触れることなく SPA を作れると確信したのです。
欠けていたのは、四つの要件を満たすテンプレートシステムでした。すなわち、コンパイル時の型安全性、アロケーションなしで std.Io.Writer へ直接書き込む高速性、XSS を防ぐためにすべての入力をデフォルトでエスケープすること、そして HTML を書いているように感じられる構文です。既存のどの選択肢もすべてを満たしませんでした。JSX に着想を得た Ziex は有益なアイデアを提供しましたが、対象は WASM であり、作者の必要に合いませんでした。Go の Templ が最も明快なモデルを示しました。
その結果が zt です。これは Templ を Zig に移植したものです。テンプレートは zig build の過程で解析され Zig にトランスパイルされるため、アプリのコードをインポートでき、アプリのコードからもテンプレートをインポートできます。パラメータは完全に型付けされ、レンダリングのエラーはコンパイル時に検出されます。生成されたコードは、ソケットであれバッファであれ、単に std.Io.Writer に書き込みます。
使い方は簡単です。テンプレートは templ キーワードで宣言され、@children を通じてコンポーネントをネストでき、任意のユーザーレコードのような型付きパラメータを受け取ります。レンダリングは直接呼び出すこともでき、HTML レスポンス用には Dusty の render ヘルパーを通して呼び出すこともできます。
出典: Hacker News · 要約:HeadlinesBriefing