Templating côté serveur : Jinja2 et Handlebars
Utilisez des moteurs de modèles pour générer dynamiquement du HTML sur le serveur.
Templating côté serveur : Jinja2 et Handlebars est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
Pourquoi utiliser la modélisation côté serveur ?
Les modèles côté serveur génèrent le HTML sur le serveur avant de l’envoyer au navigateur. Ils fournissent un balisage favorable au référencement dès le premier octet, fonctionnent sans JavaScript et évitent le problème de la « page blanche jusqu’au chargement de JavaScript » propre au rendu entièrement côté client.
Jinja2 (Python)
Jinja2 est la bibliothèque de modélisation Python de référence ; elle est utilisée par Flask, Django (via le moteur inclus ou le moteur jinja2), Pelican et mkdocs. La logique se trouve dans les balises {% %} et les expressions dans {{ }} : <h1>{{ title }}</h1> pour les variables, {% for item in items %} pour les boucles.
<ul>
{% for item in items %}
<li>{{ item.name }} — ${{ item.price }}</li>
{% endfor %}
</ul>Handlebars (JavaScript)
Handlebars est la bibliothèque de modélisation la plus utilisée pour Node.js, appréciée pour les courriels transactionnels (SendGrid, Mailgun) et le SSR via Express. Les expressions utilisent {{ }} et les blocs {{# }} : {{#each items}}<li>{{name}}</li>{{/each}}.
<ul>
{{#each items}}
<li>{{name}} — ${{price}}</li>
{{/each}}
</ul>Échappement automatique
Les deux moteurs échappent automatiquement la sortie des variables par défaut : {{ user.name }} avec name = "<script>" produit "<script>", ce qui neutralise XSS. Fiez-vous toujours à l’échappement automatique ; n’utilisez le filtre brut explicite (Jinja : {{ x|safe }}, Handlebars : {{{x}}}) que pour du HTML de confiance.
Héritage des modèles
Jinja : {% extends "base.html" %} dans le modèle enfant, et {% block content %}{% endblock %} dans le modèle de base. Handlebars : {{#> layout }}{{/layout}} avec des blocs partiels. Cela permet à un modèle de base de définir la structure une seule fois ; les pages remplissent les zones variables.
Inclusions et modèles partiels
Jinja : {% include "header.html" %}. Handlebars : {{> header}}. Les deux insèrent un autre modèle dans le modèle actuel. Les modèles partiels sont les briques de base des grandes bibliothèques de composants : ils sont assemblés dans des pages et des mises en page.
Filtres et assistants
Filtres Jinja : {{ price|currency }}. Assistants Handlebars : {{currency price}}. Les deux permettent d’appeler des fonctions de formatage sur des valeurs. Définissez les vôtres pour les transformations propres au projet (formatage des dates, gestion du pluriel, construction de liens).
Conditionnelles
Jinja : {% if user.is_logged_in %}Welcome{% else %}Sign in{% endif %}. Handlebars : {{#if user.isLoggedIn}}Welcome{{else}}Sign in{{/if}}. Faites varier les modèles selon les données sans recourir à JS côté client pour masquer ou afficher le contenu.
Performances
Les deux moteurs précompilent les modèles en fonctions, puis appellent ces fonctions à chaque requête. La compilation n’a lieu qu’une fois ; le rendu est rapide. Pour les sites à très fort trafic, mettez en cache le rendu à la périphérie (Varnish, Cloudflare) plutôt que de régénérer des pages identiques.
Localisation
Associez les modèles à des bibliothèques d’internationalisation : Jinja2 + Babel pour Python, Handlebars + i18next pour Node. Les modèles contiennent des clés de traduction ({{ t "welcome" }}) ; la couche d’internationalisation choisit la langue appropriée. Un seul modèle peut ainsi être rendu dans de nombreuses langues.
Modèles des cadres logiciels
Les cadres logiciels modernes proposent leurs propres formats de modèles : ERB (Rails), Twig (Symfony), Blade (Laravel), Razor (.NET), Slim/Haml (plus concis). Les principes sont les mêmes ; seule la syntaxe diffère. Choisissez le moteur qui correspond au langage de votre serveur et à son écosystème.
Évoluer vers les composants
Les modèles conviennent parfaitement aux sites traditionnels dont le rendu est produit par le serveur. Pour les applications plus interactives, des cadres logiciels comme Next.js (React), Nuxt (Vue) et SvelteKit rendent la distinction floue : ils produisent le rendu des modèles sur le serveur, puis les mêmes composants sont hydratés côté client pour assurer l’interactivité.
Vérification des connaissances
Pourquoi l’échappement automatique est-il le comportement par défaut des moteurs de modèles comme Jinja2 et Handlebars ?
Résumé
Les moteurs de modèles côté serveur (Jinja2 pour Python, Handlebars pour JS, ERB/Twig/Blade pour d’autres piles techniques) génèrent du HTML sur le serveur à partir de variables, de boucles, de conditionnelles, de modèles partiels et d’héritage. L’échappement automatique protège par défaut contre XSS. Associez-les à des bibliothèques d’internationalisation pour les sites multilingues. Les modèles sont la fondation ; les cadres logiciels modernes ajoutent une couche d’hydratation.
Questions Fréquemment Posées
La leçon « Templating côté serveur : Jinja2 et Handlebars » est-elle gratuite ?
Oui — le texte complet de « Templating côté serveur : Jinja2 et Handlebars » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Templating côté serveur : Jinja2 et Handlebars » ?
Utilisez des moteurs de modèles pour générer dynamiquement du HTML sur le serveur. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Templating côté serveur : Jinja2 et Handlebars » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Extraction de composants et modèles partiels
- Templating côté serveur : Jinja2 et Handlebars
- HTML dans les systèmes de conception
- Intégration de la documentation et du guide de styles