Renderovanie v štýle Go html/template v Ruste.
go_html_template je Rust crate, ktorá kopíruje hlavné pracovné postupy knižnice Go html/template. Podporuje syntax šablón, pipeline, escapovanie podľa kontextu a blokovanie nebezpečných URL schém pri zachovaní známeho tvaru API.
Template API podobné Go
Použite Template::new(...).parse(...).execute(...) s funkciami define/template/range/with/pipeline.
Escapovanie podľa kontextu
Aplikuje escapovanie podľa kontextu pre HTML text, atribúty, URL atribúty a kontext script/style a blokuje nebezpečné javascript: URL.
Režim web-rust
Pri funkcii web-rust sú parse_files/parse_glob/parse_fs zakázané, takže možno vynútiť načítanie šablón iba z pamäte.
Nastavenie a základné použitie
Pridajte crate a potom overte minimálny tok parse + execute_to_string. V prostredí web-rust používajte šablóny v pamäti namiesto API na načítanie zo súborov.
Inštalácia
cargo add go_html_template
Príklad v Ruste
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(())
}
Stav kompatibility
go_html_template v súčasnosti implementuje základné pracovné postupy a zároveň ďalej uzatvára medzery v kompatibilite . Zatiaľ nejde o striktne 1:1 kompatibilitu s Go html/template, preto si správanie overte vo svojich produkčných šablónach.
Predchádzajúce
Zoznam OSS