Kết xuất kiểu Go html/template trong Rust.
go_html_template là một crate Rust phản chiếu các luồng làm việc chính của Go html/template. Nó hỗ trợ cú pháp template, pipeline, escape theo ngữ cảnh và chặn scheme URL không an toàn trong khi vẫn giữ hình dạng API quen thuộc.
API Template kiểu Go
Dùng Template::new(...).parse(...).execute(...) với các tính năng define/template/range/with/pipeline.
Escape theo ngữ cảnh
Áp dụng escape theo ngữ cảnh cho văn bản HTML, thuộc tính, thuộc tính URL và ngữ cảnh script/style, đồng thời chặn URL javascript: không an toàn.
Chế độ web-rust
Khi bật tính năng web-rust, parse_files/parse_glob/parse_fs bị vô hiệu hóa để buộc nạp template trong bộ nhớ.
Thiết lập và cách dùng cơ bản
Thêm crate, sau đó kiểm tra luồng parse + execute_to_string tối thiểu. Trong môi trường web-rust, hãy dùng chuỗi template trong bộ nhớ thay vì API nạp từ file.
Cài đặt
cargo add go_html_template
Ví dụ 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(())
}
Trạng thái tương thích
go_html_template hiện tại triển khai các luồng cốt lõi đồng thời tiếp tục thu hẹp khoảng cách tương thích . Nó vẫn chưa phải mục tiêu tương thích 1:1 nghiêm ngặt với Go html/template, vì vậy hãy kiểm tra hành vi trong template sản xuất của bạn.
Trước đó
Danh sách OSSTiếp theo
README / Thông số đầy đủ