Go html/template-stílusú renderelés Rustban
A go_html_template egy Rust crate, amely a fontosabb Go html/template munkafolyamatokat tükrözi. Támogatja a templateszintaxist, a pipeline-okat, a kontextusfüggő escapinget és a nem biztonságos javascript: URL-ek blokkolását, miközben ismerős API-formát tart meg.
Go-szerű Template API
Használhatja a Template::new(...).parse(...).execute(...) hívásokat define/template/range/with/pipeline funkciókkal.
Kontextusfüggő escaping
Kontextusfüggő escapinget alkalmaz HTML szöveghez, attribútumokhoz, URL-attribútumokhoz és script/style környezetekhez, valamint blokkolja a nem biztonságos javascript: URL-eket.
web-rust mód
A web-rust feature bekapcsolásával a parse_files/parse_glob/parse_fs letiltásra kerül, így kikényszeríthető a memóriabeli template-betöltés.
Beállítás és alapvető használat
Adja hozzá a crate-et, majd ellenőrizze a minimális parse + execute_to_string folyamatot. web-rust környezetben a fájlbetöltő API-k helyett memóriabeli template stringeket használjon.
Telepítés
cargo add go_html_template
Rust példa
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(())
}
Kompatibilitási állapot
A go_html_template jelenleg az alapvető munkafolyamatokat megvalósítja, miközben tovább zárja a kompatibilitási réseket . Még nem szigorú 1:1 kompatibilitási cél a Go html/template-tel, ezért éles template-eknél ellenőrizze a viselkedést.
Előző
OSS listaKövetkező
README / Teljes specifikáció