Go html/template-stilrendering i Rust.

go_html_template er et Rust-crate som speiler sentrale arbeidsflyter fra Go html/template. Det støtter templatesyntaks, pipelines, kontekstbevisst escaping og blokkering av usikre URL-skjemaer, samtidig som API-formen forblir kjent.

Go-lignende template-API

Bruk Template::new(...).parse(...).execute(...) med funksjoner som define/template/range/with/pipeline.

Kontekstbevisst escaping

Bruker kontekstbevisst escaping for HTML-tekst, attributter, URL-attributter og script/style-kontekster, og blokkerer usikre javascript:-URL-er.

web-rust-modus

Med web-rust-funksjonen er parse_files/parse_glob/parse_fs deaktivert, slik at lasting av maler fra minnet kan håndheves.

Oppsett og grunnleggende bruk

Legg til cratet, og verifiser deretter en minimal flyt med parse + execute_to_string. I web-rust-miljøer bør du bruke malstrenger i minnet i stedet for fil-API-er.

Installer

cargo add go_html_template

Rust-eksempel

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

go_html_template implementerer for øyeblikket kjernearbeidsflyter samtidig som kompatibilitetsgap fortsetter å lukkes . Det er ennå ikke et strengt 1:1-kompatibilitetsmål med Go html/template, så verifiser oppførselen i produksjonstemplatene dine.