#handlebars #tide #template #render-template #extension #content #body

tide-handlebars

A crate to simplify working with Tide and Handlebars

8 releases (breaking)

0.9.0 Feb 1, 2021
0.8.0 Nov 15, 2020
0.7.0 Nov 15, 2020
0.6.0 Oct 28, 2020
0.1.0 Jul 13, 2020

#326 in Template engine

Download history 4/week @ 2024-02-16 7/week @ 2024-02-23 5/week @ 2024-03-01 8/week @ 2024-03-08 4/week @ 2024-03-15 2/week @ 2024-03-22 89/week @ 2024-03-29

104 downloads per month

Apache-2.0

22KB
138 lines

tide-handlebars

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

Documentation


Crates.io version docs.rs docs Build

usage

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.

Dependencies

~12–24MB
~365K SLoC