Rendering bergaya Go html/template di Rust

go_html_template adalah crate Rust yang mencerminkan alur kerja utama Go html/template. Ia mendukung sintaks template, pipeline, escaping sadar konteks, dan pemblokiran skema URL tidak aman sambil mempertahankan bentuk API yang familiar.

API Template mirip Go

Gunakan Template::new(...).parse(...).execute(...) dengan fitur define/template/range/with/pipeline.

Escaping Sadar Konteks

Menerapkan escaping sadar konteks untuk teks HTML, atribut, atribut URL, dan konteks script/style, serta memblokir URL javascript: yang tidak aman.

Mode web-rust

Dengan fitur web-rust, parse_files/parse_glob/parse_fs dinonaktifkan sehingga pemuatan template dari memori dapat dipaksakan.

Persiapan dan penggunaan dasar

Tambahkan crate ini, lalu verifikasi alur minimal parse + execute_to_string. Di lingkungan web-rust, gunakan string template dalam memori alih-alih API pemuatan file.

Instal

cargo add go_html_template

Contoh 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(())
}
Status Kompatibilitas

go_html_template saat ini mengimplementasikan alur inti sambil terus menutup celah kompatibilitas . Ini belum menjadi target kompatibilitas 1:1 yang ketat dengan Go html/template, jadi verifikasi perilakunya pada template produksi Anda.