Rust-та Go html/template стиліндегі рендерлеу

go_html_template - Go html/template-тің негізгі жұмыс ағындарын қайталайтын Rust crate. Ол template синтаксисін, pipeline-дарды, контекстке сезімтал escaping-ті және қауіпті URL scheme-дерін бұғаттауды қолдайды, әрі таныс API пішінін сақтайды.

Go тәрізді Template API

Template::new(...).parse(...).execute(...) пайдаланыңыз, define/template/range/with/pipeline мүмкіндіктерімен.

Context-aware 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 үйлесімділік мақсаты емес, сондықтан өндірістік шаблондарыңызда мінез-құлықты тексеріңіз.