Рендерирање во стил на Go html/template во Rust

go_html_template е Rust crate што ги следи главните текови на Go html/template. Поддржува template синтакса, pipeline-и, context-aware escaping и блокирање на небезбедни URL шеми, со позната API форма.

Go-сличен Template API

Користете Template::new(...).parse(...).execute(...) со define/template/range/with/pipeline можности.

Context-aware escaping

Применува context-aware escaping за HTML текст, атрибути, URL атрибути и script/style контексти, и блокира небезбедни javascript: URL-адреси.

web-rust режим

Со web-rust функцијата, parse_files/parse_glob/parse_fs се оневозможени за да може да се наметне вчитување на template-и од меморија.

Поставување и основна употреба

Додајте го crate-от, па потоа проверете минимален parse + execute_to_string тек. Во web-rust околини користете template низи од меморија наместо API-ja за вчитување од датотеки.

Инсталирај

cargo add go_html_template

Rust пример

src/main.rs
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 template-и.