Renderovanje u stilu Go html/template-a u Rust-u.
go_html_template je Rust crate koji prati glavne tokove rada Go html/template-a. Podržava sintaksu šablona, pipeline-ove, kontekstno osvešćeno escaping ponašanje i blokiranje nebezbednih URL šema, uz poznat oblik API-ja.
API šablona nalik Go-u
Koristite Template::new(...).parse(...).execute(...) uz define/template/range/with/pipeline funkcije.
Escaping svestan konteksta
Primenjuje escaping svestan konteksta za HTML tekst, atribute, URL atribute i script/style kontekste, i blokira nebezbedne javascript: URL-ove.
web-rust režim
Uz funkciju web-rust, parse_files/parse_glob/parse_fs su onemogućeni, tako da se može nametnuti učitavanje šablona isključivo iz memorije.
Podešavanje i osnovna upotreba
Dodajte crate, pa proverite minimalan tok parse + execute_to_string. U web-rust okruženjima koristite šablone iz memorije umesto API-ja za učitavanje iz fajlova.
Instalacija
cargo add go_html_template
Rust primer
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(())
}
Status kompatibilnosti
go_html_template trenutno implementira osnovne tokove rada dok nastavlja da popunjava praznine u kompatibilnosti . Još nije strogo 1:1 kompatibilan sa Go html/template-om, zato proverite ponašanje u produkcionim šablonima.
Prethodno
OSS listaSledeće
README / Pune specifikacije