Randare in stil Go html/template in Rust.
go_html_template este un crate Rust care reproduce fluxurile principale din Go html/template. Suporta sintaxa de template, pipeline-uri, escaping sensibil la context si blocarea schemelor URL nesigure, pastrand o forma de API familiara.
API de template in stil Go
Foloseste Template::new(...).parse(...).execute(...) cu functionalitati define/template/range/with/pipeline.
Escaping sensibil la context
Aplica escaping sensibil la context pentru text HTML, atribute, atribute URL si contexte script/style si blocheaza URL-urile javascript: nesigure.
Mod web-rust
Cu funcționalitatea web-rust, parse_files/parse_glob/parse_fs sunt dezactivate, astfel încât încărcarea template-urilor din memorie poate fi impusă.
Configurare si utilizare de baza
Adaugă crate-ul, apoi verifică un flux minim parse + execute_to_string. În mediile web-rust, folosește șiruri de template în memorie în locul API-urilor de încărcare din fișiere.
Instalare
cargo add go_html_template
Exemplu 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(())
}
Starea compatibilitatii
go_html_template in prezent implementeaza fluxurile de baza si continua sa reduca diferentele de compatibilitate . Inca nu este o tinta stricta de compatibilitate 1:1 cu Go html/template, asa ca verificati comportamentul in template-urile de productie.
Anteriorul
Lista OSSUrmatorul
README / Specificatii complete