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

src/main.rs
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.