Rust में Go html/template शैली का रेंडरिंग
go_html_template एक Rust crate है जो Go html/template के मुख्य वर्कफ़्लो को प्रतिबिंबित करता है। यह template syntax, pipelines, context-aware escaping और unsafe URL scheme blocking का समर्थन करता है, और साथ ही परिचित API रूप बनाए रखता है।
Go-शैली Template API
Template::new(...).parse(...).execute(...) का उपयोग define/template/range/with/pipeline सुविधाओं के साथ करें।
संदर्भ-सचेत एस्केपिंग
HTML text, attributes, URL attributes और script/style contexts के लिए context-aware escaping लागू करता है, और असुरक्षित javascript: URLs को ब्लॉक करता है।
web-rust मोड
web-rust feature के साथ parse_files/parse_glob/parse_fs अक्षम हो जाते हैं, जिससे केवल in-memory template loading लागू की जा सकती है।
सेटअप और बुनियादी उपयोग
crate जोड़ें, फिर एक न्यूनतम parse + execute_to_string flow की पुष्टि करें। web-rust environments में file-loading APIs के बजाय in-memory template strings का उपयोग करें।
इंस्टॉल करें
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 वर्तमान में मुख्य वर्कफ़्लो लागू करता है और संगतता की खाइयों को लगातार कम कर रहा है । यह अभी तक Go html/template के साथ सख्त 1:1 संगतता का लक्ष्य नहीं है, इसलिए अपने production templates में व्यवहार की पुष्टि करें।
पिछला
OSS सूचीअगला
README / पूर्ण विवरण