Go html/template-style renderiranje u Rustu.

`go_html_template` je Rust biblioteka koja oponaša glavne radne tokove Go-ovog modula `html/template`. Pruža podršku za sintaksu predložaka, cjevovode, kontekstualno izbjegavanje znakova te blokiranje nesigurnih URL shema, uz zadržavanje poznatog API-ja.

API za predloške sličan Go-u

Koristite funkciju `Template::new(...).parse(...).execute(...)` uz mogućnosti definiranja, predložaka, raspona, uvjetnih izjava i cjevovoda.

Kontekstualno izbjegavanje znakova

Primjenjuje kontekstualno izbjegavanje (escaping) za HTML tekst, atribute, URL adrese i kontekste skripti/stilova, te blokira opasne JavaScript URL adrese.

Način rada "web-rust"

Uz funkciju "web-rust", onemogućene su funkcije `parse_files`, `parse_glob` i `parse_fs` kako bi se osiguralo učitavanje predložaka isključivo iz memorije.

Postavljanje i osnovna upotreba

Dodajte biblioteku, a zatim provjerite minimalni proces parsiranja i izvršavanja koji rezultira tekstualnim izlazom. U okruženjima s web-rust tehnologijom, koristite tekstualne šablone pohranjene u memoriji umjesto API-ja za učitavanje datoteka.

Instalacija

cargo add go_html_template

Primjer u Rustu

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(())
}
Status kompatibilnosti

Biblioteka go_html_template trenutno implementira ključne radne procese i radi na smanjenju razlika u kompatibilnosti , ali još nije postigla potpunu 1:1 kompatibilnost s Go-ovim html/template paketom, pa svakako provjerite ponašanje u svojim produkcijskim predlošcima.