ការបង្ហាញរចនាប័ទ្ម Go html/template ក្នុង Rust

go_html_template គឺជា crate Rust ដែលចម្លងលំហូរការងារសំខាន់ៗរបស់ Go html/template។ វាគាំទ្រ syntax របស់ template, pipelines, ការសម្ងាត់តាមបរិបទ, និងការទប់ស្កាត់ URL scheme មិនសុវត្ថិភាព ខណៈរក្សារូបរាង API ដែលស្គាល់។

API Template ដូច Go

ប្រើ Template::new(...).parse(...).execute(...) ជាមួយមុខងារ define/template/range/with/pipeline។

ការសម្ងាត់តាមបរិបទ

អនុវត្តការសម្ងាត់តាមបរិបទសម្រាប់ text HTML, attributes, URL attributes, និង script/style contexts ហើយទប់ស្កាត់ javascript: URLs ដែលមិនសុវត្ថិភាព។

របៀប web-rust

ជាមួយមុខងារ web-rust, parse_files/parse_glob/parse_fs ត្រូវបានបិទ ដើម្បីអាចបង្ខំឲ្យផ្ទុក template ពី memory ប៉ុណ្ណោះ។

ដំឡើង និងប្រើប្រាស់មូលដ្ឋាន

បន្ថែម crate បន្ទាប់មកផ្ទៀងផ្ទាត់លំហូរ parse + execute_to_string អប្បបរមា។ ក្នុងបរិស្ថាន web-rust សូមប្រើ template strings ក្នុង memory ជំនួស APIs ផ្ទុកឯកសារ។

ដំឡើង

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 អនុវត្តលំហូរស្នូល ខណៈកំពុងបិទគម្លាតភាពឆបគ្នាបន្តទៀត . វាមិនទាន់ជា target ភាពឆបគ្នា 1:1 តឹងរ៉ឹងជាមួយ Go html/template ទេ ដូច្នេះត្រូវផ្ទៀងផ្ទាត់ behavior នៅក្នុង production templates របស់អ្នក។