Rust ичинде Go html/template стилиндеги рендерлөө

go_html_template - Go html/template'дин негизги иш агымдарын кайталай турган Rust crate. Ал template синтаксисин, pipeline'дерди, контекстке сезимтал escaping'ди жана коопсуз эмес URL схемаларын бөгөттөөнү колдойт, ошол эле учурда тааныш 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 өчүрүлөт, ошондуктан шаблондорду жаддан жүктөөнү мажбурлоого болот.

Орнотуу жана негизги колдонуу

Crate'ти кошуп, минималдуу parse + execute_to_string агымын текшериңиз. web-rust чөйрөлөрүндө файл жүктөө API'леринин ордуна жаддагы template саптарын колдонуңуз.

Орнотуу

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 азыр негизги иш агымдарды ишке ашырып, шайкештик боштуктарын жапканды улантууда . Ал азырынча Go html/template үчүн катуу 1:1 шайкештик максаты эмес, ошондуктан өндүрүштүк шаблондоруңузда жүрүм-турумду текшериңиз.