Rust ನಲ್ಲಿ Go html/template ಶೈಲಿಯ ರೆಂಡರಿಂಗ್

go_html_template ಒಂದು Rust crate ಆಗಿದ್ದು Go html/template ನ ಪ್ರಮುಖ ವರ್ಕ್‌ಫ್ಲೋಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ. ಇದು template syntax, pipelines, context-aware escaping, ಮತ್ತು ಅಪಾಯಕಾರಿ URL scheme blocking ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಜೊತೆಗೆ ಪರಿಚಿತ API ರೂಪವನ್ನು ಉಳಿಸುತ್ತದೆ.

Go-ಸಮಾನ Template API

define/template/range/with/pipeline ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ Template::new(...).parse(...).execute(...) ಅನ್ನು ಬಳಸಿ.

Context-aware Escaping

HTML text, attributes, URL attributes, ಮತ್ತು script/style contexts ಗೆ context-aware escaping ಅನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ, ಮತ್ತು ಅಪಾಯಕಾರಿ javascript: URLs ಅನ್ನು ತಡೆಹಿಡಿಯುತ್ತದೆ.

web-rust ಮೋಡ್

web-rust feature ಸಕ್ರಿಯವಾಗಿರುವಾಗ parse_files/parse_glob/parse_fs ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ in-memory template loading ಅನ್ನು ಬಲವಂತಗೊಳಿಸಬಹುದು.

ಸೆಟಪ್ ಮತ್ತು ಮೂಲ ಬಳಕೆ

ಕ್ರೇಟ್ ಅನ್ನು ಸೇರಿಸಿ, ನಂತರ ಕನಿಷ್ಠ parse + execute_to_string flow ಅನ್ನು ಪರಿಶೀಲಿಸಿ. web-rust ಪರಿಸರಗಳಲ್ಲಿ ಫೈಲ್-ಲೋಡಿಂಗ್ APIಗಳ ಬದಲು ಮೆಮೊರಿಯಲ್ಲಿನ template strings ಅನ್ನು ಬಳಸಿ.

ಇನ್‌ಸ್ಟಾಲ್

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 ಹೊಂದಾಣಿಕೆಯ ಗುರಿ ಅಲ್ಲ, ಆದ್ದರಿಂದ production templates ನಲ್ಲಿ ವರ್ತನೆಯನ್ನು ಪರಿಶೀಲಿಸಿ.