Rendering i Rust, der minder om Go html/template.
go_html_template er et Rust-crate, der spejler de vigtigste workflows i Go html/template. Det understøtter skabelonsyntaks, pipelines, kontekstbevidst escaping og blokering af usikre URL-skemaer, samtidig med at API-formen forbliver velkendt.
Go-lignende template-API
Brug Template::new(...).parse(...).execute(...) med define/template/range/with/pipeline-funktioner.
Kontekstbevidst escaping
Anvender kontekstbevidst escaping for HTML-tekst, attributter, URL-attributter og script/style-kontekster og blokerer usikre javascript:-URL'er.
web-rust-tilstand
Med web-rust-featuret deaktiveres parse_files/parse_glob/parse_fs, så indlæsning af templates fra hukommelsen kan håndhæves.
Opsætning og grundlæggende anvendelse
Tilføj cratet, og verificér derefter et minimalt parse + execute_to_string-flow. I web-rust-miljøer skal du bruge templatestrenge i hukommelsen i stedet for filindlæsnings-API'er.
Installer
cargo add go_html_template
Rust-eksempel
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(())
}
Kompatibilitetsstatus
go_html_template implementerer allerede kerne-workflows og lukker løbende kompatibilitetshuller . Det er endnu ikke et strengt 1:1-kompatibilitetsmål med Go html/template, så verificér adfærden i dine produktionstemplates.
Forrige
OSS-liste