Рендеринги сабки Go html/template дар Rust.
go_html_template як crate-и Rust аст, ки ҷараёнҳои асосии Go html/template-ро тақлид мекунад. Он синтаксиси template, pipeline, escaping-и вобаста ба контекст ва бастани схемаҳои ноамни URL-ро дастгирӣ мекунад ва ҳамзамон шакли API-и шиносро нигоҳ медорад.
API-и шаблонҳо ба услуби Go
Template::new(...).parse(...).execute(...) -ро бо define/template/range/with/pipeline истифода баред.
Escaping-и вобаста ба контекст
Escaping-и вобаста ба контекстро барои матни HTML, attribute-ҳо, attribute-ҳои URL ва контексти script/style татбиқ мекунад ва URL-ҳои ноамни javascript:-ро мебандад.
Ҳолати web-rust
Дар хусусияти web-rust, parse_files/parse_glob/parse_fs ғайрифаъол мешаванд, то боркунии шаблонҳо танҳо аз хотира маҷбур карда шавад.
Насб ва истифодаи асосӣ
crate-ро илова кунед, сипас ҷараёни минималии parse + execute_to_string-ро санҷед. Дар муҳитҳои web-rust ба ҷойи 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 ҳоло ҷараёнҳои асосиро амалӣ мекунад ва ҳангоми кор холигиҳои мутобиқатро кам мекунад . Он ҳанӯз ҳадафи мутобиқати қатъии 1:1 бо Go html/template нест, бинобар ин рафторро дар шаблонҳои истеҳсолии худ санҷед.
Қаблӣ
Рӯйхати OSS