Go html/template-ის სტილის რენდერინგი Rust-ში
go_html_template არის Rust crate, რომელიც Go html/template-ის მთავარ სამუშაო ნაკადებს იმეორებს. ის მხარს უჭერს template სინტაქსს, pipelines-ს, კონტექსტის მიხედვით escaping-ს და არასაიმედო URL scheme-ების დაბლოკვას, ნაცნობ API ფორმასთან ერთად.
Go-ს მსგავსი Template API
გამოიყენეთ Template::new(...).parse(...).execute(...) define/template/range/with/pipeline ფუნქციებით.
კონტექსტის მიხედვით escaping
HTML ტექსტისთვის, ატრიბუტებისთვის, URL ატრიბუტებისთვის და script/style კონტექსტებისთვის იყენებს კონტექსტის მიხედვით escaping-ს და ბლოკავს არასაიმედო javascript: URL-ებს.
web-rust რეჟიმი
web-rust ფიჩერით parse_files/parse_glob/parse_fs გამორთულია, რათა template-ების ჩატვირთვა მხოლოდ მეხსიერებაში მოხდეს.
დაყენება და ძირითადი გამოყენება
დაამატეთ crate, შემდეგ გადაამოწმეთ parse + execute_to_string-ის მინიმალური ნაკადი. web-rust გარემოში გამოიყენეთ მეხსიერებაში არსებული template string-ები ფაილებიდან ჩატვირთვის API-ების ნაცვლად.
დაყენება
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 template-ებში გადაამოწმეთ.
წინა
OSS სიაშემდეგი
README / სრული სპეციფიკაცია