Go html/template ոճի արտապատկերում Rust-ում
go_html_template-ը Rust crate է, որը վերարտադրում է Go html/template-ի հիմնական աշխատանքային հոսքերը։ Այն աջակցում է template syntax-ին, pipeline-ներին, context-aware escaping-ին և unsafe URL scheme-ների արգելափակմանը՝ պահպանելով ծանոթ API կառուցվածքը։
Go-ի նման Template API
Օգտագործիր Template::new(...).parse(...).execute(...)՝ define/template/range/with/pipeline հնարավորություններով։
Context-aware escaping
Կիրառում է context-aware escaping HTML տեքստի, հատկանիշների, URL հատկանիշների և script/style context-ների համար ու արգելափակում է անվստահելի javascript: URL-ները։
web-rust ռեժիմ
web-rust feature-ի դեպքում parse_files/parse_glob/parse_fs API-ները անջատվում են, որպեսզի պարտադրվի in-memory template բեռնումը։
Կարգավորում և հիմնական օգտագործում
Ավելացրու crate-ը, ապա ստուգիր parse + execute_to_string նվազագույն հոսքը։ web-rust միջավայրում file-loading API-ների փոխարեն օգտագործիր հիշողության մեջ պահվող template string-եր։
Տեղադրել
cargo add go_html_template
Rust օրինակ
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-ը ներկայումս իրականացնում է հիմնական աշխատանքային հոսքերը՝ շարունակաբար փակելով համատեղելիության բացերը ։ Այն դեռևս խիստ 1:1 համատեղելիության թիրախ չէ Go html/template-ի հետ, այնպես որ արտադրական template-ներում վարքը հաստատապես ստուգիր։
Նախորդը
OSS ցանկՀաջորդը
README / Ամբողջական բնութագրեր