Go html/template-stijl rendering in Rust.

go_html_template is een Rust-crate die de belangrijkste Go html/template-werkstromen nabootst. Het ondersteunt templatesyntaxis, pipelines, contextbewuste escaping en het blokkeren van onveilige URL-schema's, terwijl het een vertrouwde API-structuur behoudt.

Go-achtige Template-API

Gebruik `Template::new(...).parse(...).execute(...)` met de functies voor definities, templates, bereiken, "with" en pipelines.

Contextbewuste escaping

Past contextbewuste escaping toe op HTML-tekst, attributen, URL-attributen en script-/stijlsecties, en blokkeert onveilige javascript:-URL's.

web-rust modus

Met de web-rust feature worden parse_files/parse_glob/parse_fs uitgeschakeld zodat laden vanuit geheugen kan worden afgedwongen.

Setup en basisgebruik

Voeg de crate toe en controleer vervolgens een minimale parseer- en uitvoerflow naar een string. In web-rust-omgevingen gebruikt u geheugen-gebaseerde template-strings in plaats van API's voor het laden van bestanden.

Installeren

cargo add go_html_template

Rust-voorbeeld

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(())
}
Compatibiliteitsstatus

go_html_template implementeert momenteel de belangrijkste werkstromen terwijl het compatibiliteitsverschillen blijft dichten . Het is nog geen strikt 1:1 compatibiliteitsdoel met Go html/template, dus verifieer het gedrag in uw productietemplates.