Go html/template-stilrendering i Rust.
go_html_template er et Rust-crate som speiler sentrale arbeidsflyter fra Go html/template. Det støtter templatesyntaks, pipelines, kontekstbevisst escaping og blokkering av usikre URL-skjemaer, samtidig som API-formen forblir kjent.
Go-lignende template-API
Bruk Template::new(...).parse(...).execute(...) med funksjoner som define/template/range/with/pipeline.
Kontekstbevisst escaping
Bruker kontekstbevisst escaping for HTML-tekst, attributter, URL-attributter og script/style-kontekster, og blokkerer usikre javascript:-URL-er.
web-rust-modus
Med web-rust-funksjonen er parse_files/parse_glob/parse_fs deaktivert, slik at lasting av maler fra minnet kan håndheves.
Oppsett og grunnleggende bruk
Legg til cratet, og verifiser deretter en minimal flyt med parse + execute_to_string. I web-rust-miljøer bør du bruke malstrenger i minnet i stedet for fil-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 for øyeblikket kjernearbeidsflyter samtidig som kompatibilitetsgap fortsetter å lukkes . Det er ennå ikke et strengt 1:1-kompatibilitetsmål med Go html/template, så verifiser oppførselen i produksjonstemplatene dine.
Forrige
OSS-liste