| Crates.io | tide-handlebars |
| lib.rs | tide-handlebars |
| version | 0.9.0 |
| created_at | 2020-07-13 12:41:15.31766+00 |
| updated_at | 2021-02-01 23:32:40.619421+00 |
| description | A crate to simplify working with Tide and Handlebars |
| homepage | https://github.com/no9/tide-handlebars |
| repository | https://github.com/no9/tide-handlebars |
| max_upload_size | |
| id | 264696 |
| size | 76,917 |
This crate exposes an extension trait that adds four functions to handlebars::Handlebars:
render_response - Render the template and return a tide response using the template name to assume the content type
e.g. template.html would set the content type to be text/html
render_body- Render the template and return a tide body using the template name to assume the content type
e.g. template defaults the content type to be text/plain
render_response_ext - Render the template and return a tide response specifying the file extension explicitly
e.g. "html" would set the content type to be text/html
render_body_ext - Render the template and return a tide body using the template extension to assume the content type
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(())
}
See the main handlebars repo for full details on handlebars usage.