Rust အတွင်း Go html/template စတိုင် rendering.

go_html_template သည် Go html/template ၏ အဓိက workflow များကို Rust ထဲတွင် ပြန်လည်ဖော်ပြသော crate ဖြစ်သည်။ ရင်းနှီးသော API ပုံစံကို ထိန်းထားစဉ် template syntax, pipeline, context-aware escaping နှင့် မလုံခြုံသော URL scheme များကို ပိတ်ဆို့ခြင်းတို့ကို ပံ့ပိုးသည်။

Go လို Template API

define/template/range/with/pipeline စွမ်းဆောင်ရည်များနှင့်အတူ Template::new(...).parse(...).execute(...) ကို အသုံးပြုပါ။

အခြေအနေသတိပြု escaping

HTML စာသား၊ attributes၊ URL attributes နှင့် script/style contexts များအတွက် context-aware escaping ကို အသုံးပြုပြီး မလုံခြုံသော javascript: URL များကို ပိတ်ဆို့သည်။

web-rust မုဒ်

web-rust feature ကို အသုံးပြုသည့်အခါ parse_files/parse_glob/parse_fs ကို ပိတ်ထားပြီး in-memory template loading ကိုသာ အသုံးပြုစေနိုင်သည်။

စတင်သတ်မှတ်မှု နှင့် အခြေခံ အသုံးပြုမှု

crate ကို ထည့်ပြီး အနည်းဆုံး parse + execute_to_string flow ကို စစ်ဆေးပါ။ web-rust ပတ်ဝန်းကျင်တွင် file-loading API များအစား in-memory template string များကို အသုံးပြုပါ။

တပ်ဆင်ရန်

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 သည် လက်ရှိတွင် အခြေခံ workflow များကို အကောင်အထည်ဖော်ထားပြီး compatibility gap များကို ဆက်လက်ဖြည့်ဆည်းနေသည် ။ ၎င်းသည် Go html/template နှင့် တိကျသော 1:1 ကိုက်ညီမှု ရည်မှန်းချက်တစ်ခု မဟုတ်သေးသောကြောင့် သင့် production template များတွင် အပြုအမူကို စစ်ဆေးပါ။