8个版本 (破坏性更新)

0.9.0 2021年2月1日
0.8.0 2020年11月15日
0.7.0 2020年11月15日
0.6.0 2020年10月28日
0.1.0 2020年7月13日

#334 in 模板引擎

Apache-2.0

22KB
138

tide-handlebars

此crate暴露了一个扩展trait,向handlebars::Handlebars添加了四个函数

  • render_response - 使用模板名称假设内容类型渲染模板并返回一个tide响应,例如template.html将内容类型设置为text/html

  • render_body- 使用模板名称假设内容类型渲染模板并返回一个tide body,例如template默认内容类型为text/plain

  • render_response_ext - 明确指定文件扩展名渲染模板并返回一个tide响应,例如"html"将内容类型设置为text/html

  • render_body_ext - 使用模板扩展名假设内容类型渲染模板并返回一个tide body

文档


Crates.io version docs.rs docs Build

用法

use handlebars::Handlebars;
use std::collections::BTreeMap;
use tide_handlebars::prelude::*;

struct HandlebarsEngine {
    registry: Handlebars<'static>,
}

#[async_std::main]
async fn main() -> tide::Result<()> {
    tide::log::start();

    let mut engine = HandlebarsEngine {
        registry: Handlebars::new(),
    };

    engine
        .registry
        .register_template_file("simple.html", "./examples/templates/simple.html")
        .unwrap();

    let mut app = tide::with_state(engine);
    app.at("/:name")
        .get(|req: tide::Request<HandlebarsEngine>| async move {
            let hb = &req.state().registry;
            let name: String = req.param("name")?;
            let mut data0 = BTreeMap::new();
            data0.insert("name".to_string(), name);
            Ok(hb.render_response("simple.html", &data0)?)
        });

    app.listen("127.0.0.1:8080").await?;

    Ok(())
}

有关handlebars使用的详细信息,请参阅主handlebars仓库

依赖项

~12–26MB
~374K SLoC