Utilisation des moteurs de template

Salvo ne dispose d'aucun moteur de template intégré, car les préférences en matière de style de moteur de template varient d'une personne à l'autre.

Fondamentalement, un moteur de template se résume à : données + template = chaîne de caractères.

Par conséquent, tant que la chaîne finale peut être rendue, n'importe quel moteur de template peut être pris en charge.

Par exemple, la prise en charge d'askama :

main.rs
Cargo.toml
templates/hello.html
use askama::Template;
use salvo::prelude::*;

#[derive(Template)]
#[template(path = "hello.html")]
struct HelloTemplate<'a> {
    name: &'a str,
}

#[handler]
async fn hello(req: &mut Request, res: &mut Response) {
    let hello_tmpl = HelloTemplate {
        name: req.param::<&str>("name").unwrap_or("World"),
    };
    res.render(Text::Html(hello_tmpl.render().unwrap()));
}

#[tokio::main]
async fn main() {
    tracing_subscriber::fmt().init();

    let router = Router::with_path("{name}").get(hello);
    let acceptor = TcpListener::new("0.0.0.0:8698").bind().await;
    Server::new(acceptor).serve(router).await;
}

Remarque : Pour les projets qui ne sont pas particulièrement complexes, nous recommandons vivement d'adopter une approche de séparation frontend-backend. Utilisez des frameworks d'interface utilisateur plus flexibles et disposant d'un écosystème riche (comme React, Vue, Svelte, etc.) pour construire le frontend, tandis que Salvo sert de service d'API backend. Cette approche permet une efficacité de développement accrue, des responsabilités plus claires entre le frontend et le backend, et correspond mieux aux tendances modernes de développement d'applications web.