Rendering i Go html/template-stil i Rust

go_html_template ar ett Rust-crate som speglar de viktigaste arbetsflodena i Go html/template. Det stodjer mallsyntax, pipelines, kontextmedveten escaping och blockering av osakra URL-scheman samtidigt som API-formen forblir bekant.

Mall-API i Go-stil

Anvand Template::new(...).parse(...).execute(...) med define/template/range/with/pipeline-funktioner.

Kontextmedveten escaping

Tillar kontextmedveten escaping for HTML-text, attribut, URL-attribut och script/style-kontexter, och blockerar osakra javascript:-URL:er.

web-rust-lage

Med web-rust-funktionen är parse_files/parse_glob/parse_fs avstängda så att mallar kan tvingas laddas från minnet.

Installation och grundläggande användning

Lägg till craten och verifiera sedan ett minimalt parse + execute_to_string-flöde. I web-rust-miljöer ska du använda mallsträngar i minnet i stället för filinläsnings-API:er.

Installera

cargo add go_html_template

Rust-exempel

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 implementerar i dag karnarbetssatt samtidigt som kompatibilitetsluckor fortsatt stangs . Det ar annu inte ett strikt 1:1-kompatibilitetsmal med Go html/template, sa verifiera beteendet i dina produktionsmallar.