Go html/template stiliaus atvaizdavimas Rust kalba.

go_html_template yra Rust crate, atkartojantis pagrindinius Go html/template darbo srautus. Jis palaiko šablonų sintaksę, pipeline'us, kontekstinį ekranavimą ir nesaugių URL schemų blokavimą, išlaikydamas pažįstamą API formą.

Į Go panaši Template API

Naudokite Template::new(...).parse(...).execute(...) kartu su define/template/range/with/pipeline galimybėmis.

Kontekstinis ekranavimas

Taiko kontekstinį HTML teksto, atributų, URL atributų ir script/style kontekstų ekranavimą bei blokuoja nesaugias javascript: URL schemas.

web-rust režimas

Naudojant web-rust funkciją, parse_files/parse_glob/parse_fs yra išjungiami, kad būtų galima priverstinai naudoti tik atmintyje laikomus šablonus.

Parengimas ir pagrindinis naudojimas

Pridėkite crate, tada patikrinkite minimalų parse + execute_to_string srautą. web-rust aplinkoje vietoj failų įkėlimo API naudokite atmintyje saugomas šablonų eilutes.

Įdiegimas

cargo add go_html_template

Rust pavyzdys

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(())
}
Suderinamumo būsena

Šiuo metu go_html_template įgyvendina pagrindinius darbo srautus ir toliau mažina suderinamumo spragas . Tai dar nėra griežtas 1:1 suderinamumo tikslas su Go html/template, todėl patikrinkite elgseną savo gamybiniuose šablonuose.