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
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.
Prethodno
Popis OSS-a