Go html/template'i laadne renderdamine Rustis

go_html_template on Rusti crate, mis peegeldab Go html/template'i peamisi töövooge. See toetab mallisüntaksit, torusid, kontekstitundlikku paopõgenemist ja ohtlike URL-skeemide blokeerimist, säilitades tuttava API kuju.

Go-laadne Template API

Kasuta Template::new(...).parse(...).execute(...) koos define/template/range/with/pipeline võimalustega.

Kontekstitundlik paopõgenemine

Rakendab kontekstitundlikku escaping'ut HTML-teksti, atribuutide, URL-atribuutide ning script/style kontekstide jaoks ja blokeerib ohtlikud javascript: URL-id.

web-rust režiim

Kui web-rust funktsioon on sees, siis parse_files/parse_glob/parse_fs on keelatud, et sundida kasutama mälusiseseid malle.

Seadistus ja põhiline kasutus

Lisa crate, seejärel kontrolli minimaalset parse + execute_to_string töövoogu. web-rust keskkondades kasuta faililaadimise API-de asemel mälusiseseid mallistringe.

Paigaldus

cargo add go_html_template

Rusti näide

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(())
}
Ühilduvuse olek

go_html_template praegu rakendab põhivooge ja vähendab järk-järgult ühilduvuslünki . See ei ole veel Go html/template'i range 1:1 ühilduvuse siht, seega kontrolli käitumist oma tootmismallides.