Rendering i Rust, der minder om Go html/template.

go_html_template er et Rust-crate, der spejler de vigtigste workflows i Go html/template. Det understøtter skabelonsyntaks, pipelines, kontekstbevidst escaping og blokering af usikre URL-skemaer, samtidig med at API-formen forbliver velkendt.

Go-lignende template-API

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

Kontekstbevidst escaping

Anvender kontekstbevidst escaping for HTML-tekst, attributter, URL-attributter og script/style-kontekster og blokerer usikre javascript:-URL'er.

web-rust-tilstand

Med web-rust-featuret deaktiveres parse_files/parse_glob/parse_fs, så indlæsning af templates fra hukommelsen kan håndhæves.

Opsætning og grundlæggende anvendelse

Tilføj cratet, og verificér derefter et minimalt parse + execute_to_string-flow. I web-rust-miljøer skal du bruge templatestrenge i hukommelsen i stedet for filindlæsnings-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 allerede kerne-workflows og lukker løbende kompatibilitetshuller . Det er endnu ikke et strengt 1:1-kompatibilitetsmål med Go html/template, så verificér adfærden i dine produktionstemplates.