Node.js - 6.7 Créer une mise en page commune avec Pug
Chaque page répète la même configuration : le squelette HTML, la navigation et les imports CSS. Pug permet de regrouper ce squelette dans un fichier de mise en page, que les autres pages étendent. Cette leçon montre comment créer ce layout et remplir ses blocs.
Créer le fichier de mise en page
Créez un dossier layouts dans le dossier des vues. Ce fichier contient le squelette commun, avec la structure HTML et la navigation. Il définit aussi des blocs vides : ce sont des emplacements que chaque page peut remplir avec son propre contenu.
html
head
block styles
body
block content
Étendre le layout dans une page
Dans une page, la ligne extends indique le fichier de mise en page à utiliser. Les blocs définis dans la page remplacent ceux du layout. Le bloc styles reçoit les imports CSS propres à la page, et le bloc content reçoit le contenu de la page.
Le lien actif reste à traiter
Le layout ne sait pas quelle page est affichée, donc il ne peut pas marquer le lien actif tout seul. Ce point demande de transmettre une information dynamique à la mise en page, ce que la suite du module aborde.
En résumé
Un layout Pug regroupe le squelette commun des pages. Chaque page l'étend avec extends, puis remplit les blocs styles et content. Une modification du layout se répercute sur toutes les pages qui l'utilisent.
Points clés
- Un layout évite de répéter la même configuration HTML dans chaque page.
- block définit un emplacement que les pages peuvent remplir.
- extends indique quel layout utiliser.
- Une modification dans le layout s'applique à toutes les pages qui l'étendent.
- Le lien actif ne peut pas être déterminé par le layout seul.
Questions fréquentes
Un layout peut-il servir à plusieurs pages ?
Oui, c'est tout l'intérêt. Chaque page l'étend et fournit son propre contenu.
Que mettre dans le bloc styles ?
Les imports CSS propres à la page. Ils ne font pas partie du layout par défaut.
Pourquoi un dossier layouts séparé ?
Il regroupe les mises en page et permet d'en ajouter d'autres si l'application en a besoin.