Implementare il rendering nello stile di HTML/template in Rust.

`go_html_template` è una libreria Rust che replica i principali flussi di lavoro di Go per la gestione dei template HTML. Supporta la sintassi dei template, le pipeline, la gestione dell'escaping in base al contesto e il blocco di schemi URL non sicuri, mantenendo al contempo un'interfaccia API familiare.

API per modelli nello stile di Go.

Utilizzare `Template::new(...).parse(...).execute(...)` sfruttando le funzionalità di definizione, template, intervallo, "with" e pipeline.

Fuga contestualmente consapevole.

Applica una codifica adattabile al contesto per il testo HTML, gli attributi, gli attributi degli URL e i contesti di script/stile, e blocca gli URL JavaScript potenzialmente pericolosi.

Modalità "web-rust".

Con la funzionalità "web-rust", le funzioni `parse_files`, `parse_glob` e `parse_fs` vengono disabilitate, in modo da poter forzare il caricamento dei modelli direttamente in memoria.

Configurazione e utilizzo di base.

Aggiungere la crate, quindi verificare un flusso minimo di analisi e esecuzione con conversione in stringa. Negli ambienti web-rust, utilizzare stringhe di template in memoria invece di API per il caricamento di file.

Installa.

cargo add go_html_template

Esempio in Rust.

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(())
}
Stato di compatibilità.

`go_html_template` attualmente. implementa i processi fondamentali, continuando al contempo a colmare le lacune di compatibilità. Al momento, la compatibilità con il pacchetto `html/template` di Go non è ancora perfetta, quindi verificate il comportamento nei vostri modelli utilizzati in produzione.