Utilisation des moteurs de templates

Salvo n'intègre aucun moteur de template par défaut, car les préférences en matière de style de moteur varient selon les individus.

Fondamentalement, un moteur de template repose sur : données + template = chaîne de caractères.

Ainsi, tant qu'il est possible de générer la chaîne finale, n'importe quel moteur de template peut être pris en charge.

Par exemple, voici comment utiliser askama :

main.rs
Cargo.toml
template/hello.toml
template-askama/src/main.rs
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:5800").bind().await;
    Server::new(acceptor).serve(router).await;
}

Remarque : Pour les projets non particulièrement complexes, nous recommandons plutôt une approche de développement séparant front-end et back-end, en utilisant des frameworks UI plus flexibles et mieux intégrés (comme React, Vue, Svelte, etc.) pour le front-end, tandis que Salvo sert de service API back-end. Cette méthode améliore l'efficacité du développement, clarifie les responsabilités entre front-end et back-end, et correspond mieux aux tendances actuelles du développement d'applications web modernes.