Le dev simple, efficace et élégant.

Les coulisses de mon blog statique

Dernière édition :

Table des matières

Dans cet article, je te présente de façon synthétique les caractéristiques fonctionnelles et techniques du blog que tu as sous les yeux. Cela te donnera un bon aperçu de ce qu'on peut faire avec un générateur de site statique tel qu'Eleventy, et cela pourra peut-être te donner des idées pour ton propre blog.

Fonctionnalités de mon blog

Voici les fonctionnalités principales de mon blog :

Ergonomie :

Multilingue :

Taxonomie personnalisée :

Navigation dans les articles :

Texte enrichi :

Gestion des commentaires : les visiteurs peuvent s'identifier avec leur compte GitHub pour laisser des commentaires.

Flux RSS : générés automatiquement en anglais et français.

Optimisation du SEO et de l'intégration sur les réseaux sociaux à l'aide de métadonnées classiques, de données Open Graph, d'URL canoniques et de données structurées Schema.org

Fonctionnalité à venir

Au bas de certains articles, je prévois d'ajouter un formulaire permettant aux visiteurs de s'inscrire à ma newsletter ou de recevoir des fichiers zip des sources associées à certains articles. Les données saisies dans le formulaire (nom, prénom, adresse email et id de page) seront envoyées à une API que j'ai développée avec ASP.Net Core. Mon API pilotera à son tour l'API de systeme.io, un système automatisé de gestion de contacts et d'envoi d'emails.

Note

Ce que j'aime avec le principe de site statique, c'est que l'architecture technique et le déploiement du site restent simples, tout en permettant d'exploiter des API externes pour des fonctionnalités complexes. La solution globale est plus morcelée qu'avec une architecture de SPA classique, mais elle est légère et ne nécessite aucun framework JavaScript particulier.

Caractéristiques techniques

Sans entrer dans le détail du code, voici les caractéristiques techniques essentielles de mon projet Eleventy :

Styles : Je n'utilise aucun framework CSS. Tout le code CSS est intégré dans des balises <style> des templates pour une architecture modulaire et un chargement rapide. Chaque page n'intègre généralement guère plus de 10 Ko de CSS (non minifié).

JavaScript : Je n'utilise pas non plus de framework JavaScript. J'utilise du JavaScript vanilla pour le filtrage des articles par tags, la redirection vers la page d'accueil correspondant à la langue du navigateur, le bouton de retour en haut de la page et la connexion à Google Analytics.

Pour la gestion du formulaire décrit précédemment, environ 60 lignes de JavaScript suffisent pour récupérer les données du formulaire, les envoyer à l'API et afficher un message de confirmation.

Templates : j'utilise le langage Nunjucks qui est puissant et polyvalent. Eleventy gère nativement l'héritage de templates. J'utilise en revanche les macros Nunjucks pour créer des composants réutilisables : fil d'Ariane, résumé court d'article, formulaire.

Multilingue : le code de la langue ('en' ou 'fr') figure dans l'url et les métadonnées des pages. Les fichiers sources qui dépendent de la langue (fichiers Markdown des articles et fichiers de métadonnées et autres données traduites) ont les mêmes noms dans les 2 langues mais sont stockés dans des dossiers nommés en et fr. Cela facilite la navigation et le changement de langue.

Catégories d'articles et tags : dans le projet, chaque catégorie correspond à un sous-dossier du dossier de langue. Cela me permet de retrouver les articles beaucoup plus facilement. Dans le code, chaque page de catégorie contient sa collection d'articles, stockée dans la cascade de données, une architecture propre à Eleventy.

Les tags des articles sont définis dans les frontmater YAML des fichiers Markdown.

Texte enrichi : Eleventy utilise par défaut le moteur Markdown-it pour interpréter le Markdown, et j'ai ajouté les packages suivants pour enrichir la syntaxe :

Images : toutes les images sont centralisées dans un dossier img pour pouvoir y faire référence facilement et les partager entre plusieurs langues. Mes images sont essentiellement des schémas et captures d'écran au format png, mais j'ai paramétré Eleventy pour qu'il les transforme en AVIF afin d'optimiser leur poids (grâce au plugin eleventy-img).
Je ne crée aucune variante de taille et Eleventy génère tout seul le code HTML pour les dimensions et le chargement tardif, ce qui est super pratique !
Enfin, je préfixe tous mes noms d'images par le nom de l'article dans lequel elles sont utilisées, afin de pouvoir retrouver rapidement les images de chaque article.

Note

Cette gestion d'images est un pur bonheur par rapport à ce que je connaissais dans WordPress !

Les commentaires sont gérés à l'aide de l'API Utterances et stockés dans un référentiel GitHub.


Important

La fonctionnalité qui a eu le plus d'impact sur l'architecture technique de mon blog est le multilingue. En effet, tous les articles, les textes de l'interface visuelle générale, les métadonnées et les flux RSS doivent être déclinés en au moins 2 langues, ce qui complexifie pas mal les choses.

Mais alors qu'un site créé avec WordPress aurait nécessité un plugin payant et assez lourd pour gérer cela, ma solution reste légère et entièrement gratuite ! Je te la présenterai plus en détail dans de futurs articles.

D'autres modèles

Sur la page Starter Projects du site officiel d'Eleventy, tu trouveras environ 170 modèles de sites de différents types : blog, sites vitrines, portfolios, etc. Les modèles sont généralement accompagnés d'un site de démo minimaliste. En revanche, il est souvent impossible d'en connaître les caractéristiques techniques sans télécharger le modèle et regarder son code, ce qui est assez dommage.

J'espère que cet article t'a permis de te faire une idée plus précise des possibilités offertes par le SSG Eleventy. Dis-moi en commentaire si cela t'a été utile et n'hésite pas à me poser des questions si tu en as 😉.