Rendering im Stil von Go html/template in Rust

go_html_template ist eine Rust-Crate, die die wichtigsten Arbeitsabläufe von Go html/template nachbildet. Sie unterstützt Templatesyntax, Pipelines, kontextabhängiges Escaping und das Blockieren unsicherer URL-Schemata bei vertrauter API-Struktur.

Go-ähnliche Template-API

Nutzen Sie Template::new(...).parse(...).execute(...) mit define/template/range/with/pipeline-Funktionen.

Kontextabhängiges Escaping

Wendet kontextabhängiges Escaping für HTML-Text, Attribute, URL-Attribute und Script-/Style-Kontexte an und blockiert unsichere javascript:-URLs.

web-rust-Modus

Mit dem web-rust-Feature sind parse_files/parse_glob/parse_fs deaktiviert, sodass das Laden von Templates im Speicher erzwungen werden kann.

Einrichtung und grundlegende Verwendung

Fügen Sie die Crate hinzu und prüfen Sie dann einen minimalen parse + execute_to_string-Ablauf. In web-rust-Umgebungen sollten Template-Strings im Speicher statt file-loading-APIs verwendet werden.

Installation

cargo add go_html_template

Rust-Beispiel

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(())
}
Kompatibilitätsstatus

go_html_template implementiert bereits die zentralen Arbeitsabläufe und schließt weiterhin Kompatibilitätslücken . Es ist noch kein strikt 1:1 kompatibles Ziel zu Go html/template, daher sollten Sie das Verhalten in Ihren Produktionstemplates prüfen.