Απόδοση τύπου Go html/template στη Rust
Το go_html_template είναι ένα crate σε Rust που αναπαράγει τις βασικές ροές εργασίας του Go html/template. Υποστηρίζει σύνταξη template, pipelines, escaping με επίγνωση συμφραζομένων και αποκλεισμό μη ασφαλών URL schemes, διατηρώντας οικείο σχήμα API.
Template API παρόμοιο με Go
Χρησιμοποιήστε Template::new(...).parse(...).execute(...) με τις λειτουργίες define/template/range/with/pipeline.
Escaping με επίγνωση συμφραζομένων
Εφαρμόζει escaping με επίγνωση συμφραζομένων για κείμενο HTML, attributes, URL attributes και script/style contexts, και μπλοκάρει μη ασφαλή javascript: URLs.
Λειτουργία web-rust
Με το feature web-rust, τα parse_files/parse_glob/parse_fs απενεργοποιούνται ώστε να επιβάλλεται φόρτωση templates μόνο από τη μνήμη.
Ρύθμιση και βασική χρήση
Προσθέστε το crate και έπειτα επαληθεύστε μια ελάχιστη ροή parse + execute_to_string. Σε περιβάλλοντα web-rust, χρησιμοποιήστε συμβολοσειρές προτύπων στη μνήμη αντί για APIs φόρτωσης αρχείων.
Εγκατάσταση
cargo add go_html_template
Παράδειγμα 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(())
}
Κατάσταση συμβατότητας
Το go_html_template προς το παρόν υλοποιεί τις βασικές ροές εργασίας και συνεχίζει να κλείνει κενά συμβατότητας . Δεν στοχεύει ακόμη σε αυστηρή συμβατότητα 1:1 με το Go html/template, οπότε επαληθεύστε τη συμπεριφορά στα production templates σας.
Προηγούμενο
Λίστα OSSΕπόμενο
README / Πλήρεις προδιαγραφές