在 Zig 里做类型安全的 HTML 模板 — Hacker News 中文摘要
来源:lalinsky.com — 196 分 · by todsacerdoti
📋 概述
作者从 PHP 3.0 时代开始写 Web,后来因 SPA 兴起而离开前端,两年前转向 Zig 后却发现这门底层语言也能做 Web。用 arena allocator 之后字符串生命周期不再是负担,comptime 又能撑起高层接口;配上 htmx 或 Datastar 甚至可以不碰 JavaScript。唯一缺的是模板,于是他自己补上:模板写成 Zig 代码,编译期生成 render 函数,变量默认按 HTML 转义,URL 属性额外检查危险 scheme,只有显式写 {!value} 才能输出原始 HTML。最大的好处是模板错误就是 Zig 编译错误,拼错字段名会在构建时直接报出,并附上原始模板的行号。
🔑 核心要点
- 痛点是 Zig 生态缺少既能保持性能又不靠字符串拼接的模板方案。
- 模板直接写成 Zig 代码,由 comptime 在编译期生成 render 函数。
- 变量默认按 HTML 转义,href 等 URL 属性还会检查危险 scheme。
- 只有显式写 {!value} 才能输出原始 HTML,便于审查。
- 解析器要求所有元素正确闭合,从源头消掉大部分 XSS。
- 模板错误就是 Zig 编译错误,报错会指回原始模板的行号。
💡 金句
What I like the most is that template errors are just Zig compiler errors.
👍 0
👎 0
← 返回 Hacker News 首页