„Go“ stiliaus html/template šablonų atvaizdavimas „Rust“ kalba.
„go_html_template“ yra „Rust“ biblioteka (crate), atkartojanti pagrindinius „Go“ html/template šablonų naudojimo procesus. Ji palaiko šablonų sintaksę, konvejerius (pipelines), kontekstinį ekranavimą (context-aware escaping) ir nesaugių URL schemų blokavimą, išlaikydama pažįstamą API struktūrą.
Į „Go“ panaši Template API
Naudokite „Template::new(...)“, „parse(...)“, „execute(...)“ su define/template/range/with/pipeline funkcijomis.
Kontekstinis ekranavimas
Taiko kontekstinį HTML teksto, atributų, URL atributų ir script/style kontekstų ekranavimą (escaping) 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 biblioteką (crate), tada išbandykite minimalią parse + execute_to_string eigą. „web-rust“ aplinkoje vietoj failų įkėlimo API naudokite atmintyje saugomas šablonų eilutes.
Įdiegimas
cargo add go_html_template
Rust pavyzdys
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 naudojimo procesus 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 (production) šablonuose.
Atgal
OSS sąrašasToliau
README / visa specifikacija