Type de ressource : Composant Astro (UI atomique)
Fichier source :src/components/BaseHead.astro
Statut : Actif
1. Vue dâensemble
Section titled â1. Vue dâensembleâ1.1. Description
Section titled â1.1. DescriptionâComposant pour les mĂ©tadonnĂ©es HTML globales de la page (meta tags, title, description, Open Graph, Twitter Card). Importe Ă©galement le CSS global.
1.2. Objectif
Section titled â1.2. Objectifâ- Centraliser les mĂ©tadonnĂ©es SEO pour toutes les pages
- Assurer la cohérence des meta tags sur tout le site
- Importer le CSS global pour inclure les styles sur toutes les pages
- Fournir une image de fallback pour le partage social
1.3. Caractéristiques
Section titled â1.3. CaractĂ©ristiquesâ| PropriĂ©tĂ© | Valeur |
|---|---|
| Type | UI atomique |
| Hydratation | Aucune |
| Framework JS | Aucun |
| Accessibilité | Partiellement conforme (meta tags) |
| Responsive | Non applicable |
2. Architecture et structure
Section titled â2. Architecture et structureâ2.1. Emplacement dans lâarborescence
Section titled â2.1. Emplacement dans lâarborescenceâsrc/components/âââ BaseHead.astroâââ Header.astroâââ Footer.astroâââ FormattedDate.astroâââ HeaderLink.astro2.2. Composants dĂ©pendants
Section titled â2.2. Composants dĂ©pendantsâ| Composant parent | Fichier | Relation |
|---|---|---|
| Toutes les pages | src/pages/*.astro |
Utilisation dans le <head> |
2.3. Composants enfants utilisés
Section titled â2.3. Composants enfants utilisĂ©sâ| Composant enfant | Fichier | RĂŽle |
|---|---|---|
| Aucun | - | Composant leaf |
3. Implémentation
Section titled â3. ImplĂ©mentationâ3.1. Variante : Composant UI atomique (HTML + CSS purs)
Section titled â3.1. Variante : Composant UI atomique (HTML + CSS purs)â---import '../styles/global.css';import type { ImageMetadata } from 'astro';import FallbackImage from '../assets/blog-placeholder-1.jpg';import { SITE_TITLE } from '../consts';
interface Props { title: string; description: string; image?: ImageMetadata;}
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
const { title, description, image = FallbackImage } = Astro.props;---
<!-- Global Metadata --><meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1" /><link rel="icon" type="image/svg+xml" href="/favicon.svg" /><link rel="icon" href="/favicon.ico" /><link rel="sitemap" href="/sitemap-index.xml" /><link rel="alternate" type="application/rss+xml" title={SITE_TITLE} href={new URL('rss.xml', Astro.site)}/><meta name="generator" content={Astro.generator} />
<!-- Canonical URL --><link rel="canonical" href={canonicalURL} />
<!-- Primary Meta Tags --><title>{title}</title><meta name="description" content={description} />
<!-- Open Graph / Facebook --><meta property="og:type" content="website" /><meta property="og:url" content={Astro.url} /><meta property="og:title" content={title} /><meta property="og:description" content={description} /><meta property="og:image" content={new URL(image.src, Astro.url)} />
<!-- Twitter --><meta name="twitter:card" content="summary_large_image" />3.2. Utilisation dans une page
Section titled â3.2. Utilisation dans une pageâ---import BaseHead from '../components/BaseHead.astro';import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';---
<!doctype html><html lang="en"> <head> <BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} /> </head> <body> <!-- Contenu de la page --> </body></html>4. Props et interface
Section titled â4. Props et interfaceâ4.1. Props obligatoires
Section titled â4.1. Props obligatoiresâ| Prop | Type | Description | Exemple |
|---|---|---|---|
title |
string |
Titre de la page | "Accueil" |
description |
string |
Description de la page | "Blog personnel" |
4.2. Props optionnelles
Section titled â4.2. Props optionnellesâ| Prop | Type | Description | Valeur par dĂ©faut |
|---|---|---|---|
image |
ImageMetadata |
Image pour Open Graph/Twitter | FallbackImage (blog-placeholder-1.jpg) |
4.3. Slots
Section titled â4.3. SlotsâAucun slot nâest implĂ©mentĂ© dans ce composant.
5. StratĂ©gie dâhydratation
Section titled â5. StratĂ©gie dâhydratationâ5.1. Politique dâhydratation
Section titled â5.1. Politique dâhydratationâ| Type de composant | StratĂ©gie | Rationale |
|---|---|---|
| Composant UI atomique | Aucune | HTML pur, pas dâinteraction |
5.2. Directives Astro utilisées
Section titled â5.2. Directives Astro utilisĂ©esâAucune directive nâest utilisĂ©e (composant HTML pur).
5.3. Impact sur les performances
Section titled â5.3. Impact sur les performancesâ| MĂ©trique | Sans hydratation |
|---|---|
| HTML size | +1 KB |
| CSS size | +taille global.css |
| JS size | 0 KB |
| TTI | Immédiat |
6. Styles et design system
Section titled â6. Styles et design systemâ6.1. Utilisation des design tokens
Section titled â6.1. Utilisation des design tokensâNon applicable - ce composant nâa pas de styles inline, il importe le CSS global.
6.2. Responsive design
Section titled â6.2. Responsive designâNon applicable - les meta tags viewport assurent le responsive design au niveau global.
6.3. Mode sombre
Section titled â6.3. Mode sombreâNon applicable - ce composant ne gĂšre pas le mode sombre.
7. Accessibilité (a11y)
Section titled â7. AccessibilitĂ© (a11y)â7.1. ConformitĂ© WCAG 2.1 AA
Section titled â7.1. ConformitĂ© WCAG 2.1 AAâ| CritĂšre | ImplĂ©mentation | Statut |
|---|---|---|
| 1.1.1 Non-text Content | Alt text non applicable (pas dâimages) | N/A |
| 1.3.1 Info and Relationships | Structure HTML sémantique (<head>, <title>) |
â |
| 1.4.3 Contrast (Minimum) | Non applicable (pas de contenu visuel) | N/A |
| 2.4.7 Focus Visible | Non applicable (pas dâĂ©lĂ©ments interactifs) | N/A |
7.2. Attributs ARIA utilisés
Section titled â7.2. Attributs ARIA utilisĂ©sâAucun attribut ARIA nâest utilisĂ© (composant de mĂ©tadonnĂ©es).
7.3. Navigation clavier
Section titled â7.3. Navigation clavierâNon applicable (composant de mĂ©tadonnĂ©es).
7.4. Tests dâaccessibilitĂ©
Section titled â7.4. Tests dâaccessibilitĂ©â# Test avec Lighthousenpx lighthouse http://localhost:4321/ --view8. Performance et optimisation
Section titled â8. Performance et optimisationâ8.1. Optimisations appliquĂ©es
Section titled â8.1. Optimisations appliquĂ©esâ- â HTML statique par dĂ©faut
- â Pas de JavaScript
- â Import unique du CSS global
- â Canonical URL pour Ă©viter le duplicate content
8.2. Core Web Vitals
Section titled â8.2. Core Web Vitalsâ| MĂ©trique | Objectif | StratĂ©gie |
|---|---|---|
| LCP | < 2.5s | Pas de JS bloquant |
| INP | < 200ms | Pas de JS |
| CLS | < 0.1 | Pas de layout shift |
8.3. Taille du composant
Section titled â8.3. Taille du composantâ| Type | HTML | CSS | JS (hydratĂ©) | Total |
|---|---|---|---|---|
| UI atomique | 1 KB | +global.css | 0 KB | 1 KB + global.css |
9. Débogage et troubleshooting
Section titled â9. DĂ©bogage et troubleshootingâ9.1. ProblĂšmes courants
Section titled â9.1. ProblĂšmes courantsâ| SymptĂŽme | Cause probable | Solution |
|---|---|---|
| Styles non appliquĂ©s | global.css non importĂ© | VĂ©rifier le chemin dâimport |
| Meta tags incorrects | Props non passées | Vérifier les props title et description |
| Image fallback incorrecte | FallbackImage non trouvĂ© | VĂ©rifier le chemin de lâasset |
9.2. Tests manuels
Section titled â9.2. Tests manuelsâ# Test localnpm run dev
# VĂ©rification des meta tags# Ouvrir les DevTools â Onglet Network â Recharger la page# VĂ©rifier les meta tags dans la rĂ©ponse HTML9.3. Logs et monitoring
Section titled â9.3. Logs et monitoringâNon applicable (composant statique).
10. Bonnes pratiques
Section titled â10. Bonnes pratiquesâ10.1. Architecture
Section titled â10.1. Architectureâ- â Centraliser les mĂ©tadonnĂ©es dans un composant unique
- â Importer le CSS global une seule fois
- â Utiliser une image de fallback pour le partage social
- â Typer les props avec TypeScript
10.2. Accessibilité
Section titled â10.2. AccessibilitĂ©â- â Toujours inclure un title et une description
- â Utiliser les meta tags Open Graph et Twitter Card
- â Inclure une canonical URL
10.3. Performance
Section titled â10.3. Performanceâ- â Pas de JavaScript inutile
- â Image fallback optimisĂ©e
- â Pas de styles inline
10.4. Maintenance
Section titled â10.4. Maintenanceâ- â Mettre Ă jour les meta tags selon les besoins SEO
- â VĂ©rifier la compatibilitĂ© des meta tags avec les rĂ©seaux sociaux
11. Ăvolutions et roadmap
Section titled â11. Ăvolutions et roadmapâ11.1. AmĂ©liorations planifiĂ©es
Section titled â11.1. AmĂ©liorations planifiĂ©esâ- Ajout de meta tags supplĂ©mentaires (robots, author)
- Support du mode sombre (theme-color)
- Ajout de structured data (JSON-LD)
- Support des différentes images pour Open Graph et Twitter
11.2. Limitations connues
Section titled â11.2. Limitations connuesâ- â Pas de support du mode sombre
- â Pas de structured data
- â Meta tags Twitter incomplets (twitter:title, twitter:description manquants)
12. Ressources liées
Section titled â12. Ressources liĂ©esâ- Documentation Astro : Components
- Documentation Astro : SEO
- DAT L2 : §4 - StratĂ©gie dâHydratation & Gestion du JavaScript
- Composants associés :
src/components/Header.astrosrc/components/Footer.astro
- Fichiers assets :
src/assets/blog-placeholder-1.jpg - CSS global :
src/styles/global.css
13. Historique des modifications
Section titled â13. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-15 | 1.0 | Création initiale | Devin |