Module Tailwind.8 – Bonnes pratiques
Objectif
Appliquer les bonnes pratiques Tailwind : lisibilité, organisation, workflow en équipe pour créer du code Tailwind professionnel et maintenable.
Théorie
Lisibilité
1. Ordre des classes
Ordre recommandé :
- Layout (display, position)
- Flexbox/Grid
- Spacing (margin, padding)
- Sizing (width, height)
- Typography
- Colors
- Borders
- Effects (shadows, etc.)
- States (hover, focus)
Exemple :
<button class="
flex items-center justify-center
px-4 py-2
w-full
text-white font-semibold
bg-blue-500
rounded-lg
shadow-md
hover:bg-blue-600 focus:ring-2
">
Bouton
</button>
2. Formatage multi-lignes
Classes longues :
<button class="
px-4 py-2
bg-blue-500 text-white
rounded hover:bg-blue-600
focus:ring-2 focus:ring-blue-500
">
Bouton
</button>
Avantages :
- ✅ Plus lisible
- ✅ Plus facile à modifier
- ✅ Groupes logiques
3. Commentaires HTML
Pour sections complexes :
<!-- Navigation -->
<nav class="...">
<!-- Logo -->
<div class="...">Logo</div>
<!-- Menu -->
<ul class="...">
<!-- Items -->
</ul>
</nav>
Organisation
1. Extraire les composants
Quand extraire :
- Réutilisé 3+ fois
- Logique complexe
- Maintenance facilitée
Exemple :
@layer components {
.btn-primary {
@apply px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600;
}
}
2. Groupes logiques
Organiser par fonctionnalité :
<!-- Header -->
<header class="...">
<!-- Navigation -->
<nav class="...">
<!-- Logo -->
<div class="...">Logo</div>
<!-- Menu -->
<ul class="...">Menu</ul>
</nav>
</header>
3. Fichiers séparés
Structure :
components/
├── Button.html
├── Card.html
└── Form.html
Réutilisabilité : Composants dans fichiers séparés.
Workflow en équipe
1. Conventions
Nommage :
- Composants :
.btn-primary,.card - Utilitaires : Utiliser classes Tailwind
- Pas de classes custom sauf composants
2. Code review
Vérifier :
- Ordre des classes
- Extraction appropriée
- Performance (pas trop de classes)
- Cohérence
3. Documentation
Documenter :
- Composants créés
- Design tokens
- Patterns utilisés
Bonnes pratiques spécifiques
1. Éviter les valeurs arbitraires
❌ Mauvais :
<div class="w-[347px] p-[23px]">Partout</div>
✅ Bon :
// Configurer si réutilisé
theme: {
extend: {
width: {
'custom': '347px',
}
}
}
2. Utiliser les variants appropriés
❌ Mauvais :
<div class="hover:bg-blue-500">Sans raison</div>
✅ Bon :
<button class="hover:bg-blue-600">Bouton interactif</button>
3. Composants vs utilitaires
Utilitaires :
- Utilisation unique
- Simple (2-3 classes)
Composants :
- Réutilisé
- Complexe (5+ classes)
4. Responsive mobile-first
✅ Bon :
<div class="w-full md:w-1/2 lg:w-1/3">
❌ Mauvais :
<div class="lg:w-1/3 md:w-1/2 w-full">
5. Dark mode cohérent
✅ Bon :
<div class="bg-white dark:bg-gray-800 text-gray-900 dark:text-white">
Cohérence : Appliquer dark mode partout où nécessaire.
Anti-patterns
1. Classes trop longues
❌ Mauvais :
<div class="flex items-center justify-between px-4 py-2 bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-200">
<!-- 15+ classes sur une ligne -->
</div>
✅ Bon :
<!-- Extraire en composant -->
<div class="card">
2. Répétition excessive
❌ Mauvais :
<!-- Répété 10 fois -->
<button class="px-4 py-2 bg-blue-500 text-white rounded">Bouton 1</button>
<button class="px-4 py-2 bg-blue-500 text-white rounded">Bouton 2</button>
✅ Bon :
.btn-primary {
@apply px-4 py-2 bg-blue-500 text-white rounded;
}
3. Mélanger approches
❌ Mauvais :
<div class="px-4 custom-css-class">
<!-- Tailwind + CSS custom partout -->
</div>
✅ Bon :
<!-- Tailwind uniquement, ou composants extraits -->
<div class="px-4">
4. Ignorer la configuration
❌ Mauvais :
<!-- Valeurs arbitraires partout au lieu de configurer -->
✅ Bon :
// Configurer dans tailwind.config.js
5. Pas d'organisation
❌ Mauvais :
<!-- Tout mélangé, pas de structure -->
✅ Bon :
<!-- Organisé, commentaires, groupes logiques -->
Exercices guidés
Exercice 1 : Formatage
Refactorisez du code :
- Ordre des classes logique
- Formatage multi-lignes
- Groupes logiques
Exercice 2 : Extraction
Identifiez les répétitions :
- Créez des composants
- Utilisez @apply
- Réduisez la duplication
Exercice 3 : Organisation
Organisez un projet :
- Structure de fichiers
- Composants séparés
- Documentation
Exercice 4 : Conventions
Établissez des conventions :
- Nommage
- Ordre des classes
- Quand extraire
Exercice 5 : Code review
Faites un code review :
- Identifiez les problèmes
- Corrigez selon bonnes pratiques
- Améliorez la lisibilité
❌ Erreurs fréquentes
Erreur 1 : Classes désordonnées
❌ Mauvais :
<button class="text-white bg-blue-500 px-4 rounded py-2">
✅ Bon :
<button class="px-4 py-2 bg-blue-500 text-white rounded">
Pourquoi : Ordre logique = lisibilité.
Erreur 2 : Pas d'extraction
❌ Mauvais :
<!-- Répété 20 fois -->
<button class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
✅ Bon :
.btn-primary {
@apply px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600;
}
Pourquoi : Extraction = maintenabilité.
Erreur 3 : Trop de classes
❌ Mauvais :
<div class="flex items-center justify-between px-4 py-2 bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-200 focus:ring-2 focus:ring-blue-500">
<!-- 15+ classes -->
</div>
✅ Bon :
.card {
@apply flex items-center justify-between px-4 py-2 bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow duration-200 focus:ring-2 focus:ring-blue-500;
}
Pourquoi : Composants = lisibilité HTML.
Erreur 4 : Valeurs arbitraires partout
❌ Mauvais :
<div class="w-[347px] h-[289px] p-[23px]">
✅ Bon :
// Configurer si réutilisé
Pourquoi : Configuration = cohérence.
Erreur 5 : Pas de conventions
❌ Mauvais :
<!-- Chaque développeur fait différemment -->
✅ Bon :
<!-- Conventions établies et suivies -->
Pourquoi : Conventions = collaboration facilitée.
🚀 Mini-projet
Mission : Refactoriser un projet selon les bonnes pratiques
Prenez un projet Tailwind et améliorez-le :
Améliorations :
- Ordre des classes logique
- Formatage multi-lignes
- Extraction de composants
- Organisation claire
- Documentation
Critères :
- ✅ Code lisible et organisé
- ✅ Composants extraits appropriément
- ✅ Conventions suivies
- ✅ Documentation complète
- ✅ Code professionnel
Objectif : Créer du code Tailwind professionnel selon les bonnes pratiques.
Validation : Vous pouvez passer au module suivant quand vous appliquez les bonnes pratiques Tailwind et avez un code professionnel et maintenable.