在 Rust 中進行 Go html/template 風格的渲染。
go_html_template 是一個 Rust crate,對應 Go html/template 的主要工作流程。它支援 template 語法、pipeline、依上下文進行的跳脫處理,以及封鎖不安全的 URL scheme,同時維持熟悉的 API 形式。
Go 風格的 Template API
可使用 Template::new(...).parse(...).execute(...),並支援 define / template / range / with / pipeline 功能。
依上下文跳脫
會對 HTML 文字、屬性、URL 屬性以及 script / style 上下文套用依上下文的跳脫處理,並封鎖不安全的 javascript: URL。
web-rust 模式
啟用 web-rust 功能後,parse_files / parse_glob / parse_fs 會被停用,以便強制使用記憶體中的 template 載入方式。
安裝與基本用法
先加入此 crate,再確認最小的 parse + execute_to_string 流程。在 web-rust 環境中,請使用記憶體中的 template 字串,而不是檔案載入 API。
安裝
cargo add go_html_template
Rust 範例
src/main.rs
use go_html_template::{Template, Value};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let tpl = Template::new("page")
.parse(r#"<h1>{{.Title}}</h1>\n<p>{{.Body | safe_html}}</p>"#)?;
let out = tpl.execute_to_string(&serde_json::json!({
"Title": "go_html_template",
"Body": "<em>trusted</em>"
}))?;
println!("{out}");
Ok(())
}
相容性狀態
go_html_template 目前 已實作核心工作流程,並持續縮小相容性差距 。它尚未以與 Go html/template 嚴格 1:1 相容為目標,因此請在正式環境範本中驗證實際行為。
上一頁
OSS 清單下一頁
README / 完整規格