HeadlinesBriefing HeadlinesBriefing.com

Zig 类型安全 HTML 模板:zt 实践

Hacker News •
×

一位拥有数十年网页开发经验的开发者,从 PHP 3.0 一路使用过 Python、Perl 和 Django 模板,最近开始使用 Zig 重新投入网页开发。使用 zio 和 Dusty 构建后端的经历让他们相信,借助竞技场分配器和 Zig 的 comptime,网页开发可以变得切实可行,而 htmx 或 Datastar 则让人无需接触 JavaScript 或 TypeScript 就能构建 SPA。

当时缺少的是一个满足四项要求的模板系统:编译期类型安全;无分配、直接写入 std.Io.Writer 的高性能;默认转义所有输入以防止 XSS;以及依然像在编写 HTML 的语法。现有方案没有一个能同时满足这四点。Ziex 采用受 JSX 启发的思路,提供了有用的想法,但它以 WASM 为目标,不符合作者的需求。Go 的 Templ 则提供了最清晰的模型。

结果就是 zt,一个借鉴 Templ 的 Zig 实现。模板在 zig build 期间被解析并转译为 Zig 代码,因此它们可以导入应用代码,应用代码也可以导入它们。参数是完全类型化的,渲染错误会在编译期暴露。生成的代码只是写入一个 std.Io.Writer,无论它是套接字还是缓冲区。

使用方式很简单。模板通过 templ 关键字声明,可以通过 @children 嵌套组件,并接受类型化参数,例如可选的用户记录。渲染既可以直接调用,也可以通过 Dusty 的 render 辅助函数为 HTML 响应完成。

来源: Hacker News · 由HeadlinesBriefing整理摘要