Rendering in stile Go html/template in Rust.
go_html_template è una crate Rust che replica i principali flussi di lavoro di Go per la gestione dei template HTML. Supporta la sintassi dei template, le pipeline, l'escaping in base al contesto e il blocco di schemi URL non sicuri, mantenendo un'interfaccia API familiare.
API dei template in stile Go
Utilizza Template::new(...).parse(...).execute(...) sfruttando le funzionalità di define, template, range, with e pipeline.
Escaping sensibile al contesto
Applica un escaping sensibile al contesto per testo HTML, attributi, attributi URL e contesti di script/stile, e blocca gli URL javascript: non sicuri.
Modalità web-rust
Con la funzionalità web-rust, le funzioni parse_files, parse_glob e parse_fs sono disabilitate per forzare il caricamento in memoria dei template.
Configurazione e utilizzo di base
Aggiungi la crate, quindi verifica un flusso minimo di parse ed esecuzione con conversione in stringa. Negli ambienti web-rust, utilizza stringhe di template in memoria anziché le API di caricamento file.
Installazione
cargo add go_html_template
Esempio Rust
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 flussi di lavoro fondamentali mentre continua a colmare le lacune di compatibilità . Non offre ancora una compatibilità 1:1 perfetta con html/template di Go, quindi verifica attentamente il comportamento nei tuoi template di produzione.
Precedente
Elenco OSSAvanti
README / Specifiche complete