러스트에서 HTML/템플릿 스타일의 렌더링 기능을 구현하세요.

`go_html_template`는 Rust로 작성된 라이브러리로, Go 언어의 `html/template` 기능을 모방하여 주요 워크플로우를 제공합니다. 이 라이브러리는 템플릿 구문, 파이프라인, 컨텍스트 기반 이스케이프 처리, 그리고 안전하지 않은 URL 체계 차단 기능을 지원하며, 익숙한 API 구조를 유지합니다.

Go 언어 스타일의 템플릿 API.

`Template::new(...).parse(...).execute(...)` 메서드를 사용하여 정의, 템플릿, 범위, `with` 구문, 그리고 파이프라인 기능을 활용하십시오.

상황 인지 기반의 탈출 기능.

이 기능은 HTML 텍스트, 속성, URL 속성, 그리고 스크립트/스타일 영역에서 컨텍스트에 맞는 적절한 이스케이프 처리를 적용하며, 안전하지 않은 JavaScript URL의 사용을 차단합니다.

웹 러스트 모드

"web-rust" 기능이 활성화되면 `parse_files`, `parse_glob`, `parse_fs` 기능이 비활성화되어 메모리 내 템플릿 로딩을 강제할 수 있습니다.

설치 및 기본 사용법

크레이트(crate)를 추가한 후, 최소한의 파싱(parsing) 및 실행 과정을 테스트하여 문자열로 결과를 반환하는지 확인합니다. 웹 환경에서 Rust를 사용할 때는 파일 로딩 API 대신 메모리 내 템플릿 문자열을 사용하는 것이 좋습니다.

설치합니다.

cargo 명령에 `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 템플릿 엔진과 완벽하게 호환되지는 않으므로, 실제 운영 환경에서 사용하시는 템플릿에서 예상대로 작동하는지 확인하시기 바랍니다.