Cours JavaScript et React · Module 8: Patterns React avancés
Construire une application de production et déploiement sur Vercel
Dans cette leçon8
Notre voyage cosmique à travers React touche à sa fin. Nous avons construit notre vaisseau, l'avons testé, l'avons optimisé - il est maintenant temps de le lancer dans l'espace interstellaire. Dans ce module, tu apprendras à préparer ton application React pour la production et à la déployer sur la plateforme Vercel afin qu'elle soit accessible aux utilisateurs du monde entier.
Du code à la production - préparer l'application
Le processus consistant à faire passer une application React d'un environnement de développement à la production nécessite plusieurs étapes importantes. Avant d'envoyer notre application dans l'espace (internet), nous devons la préparer correctement.
L'importance d'un build de production
Le code que nous écrivons pendant le développement n'est pas optimal pour s'exécuter dans le navigateur d'un utilisateur. Une application de production devrait être :
- Minifiée - espaces, commentaires supprimés et noms de variables raccourcis
- Optimisée - fusion de plusieurs fichiers, suppression du code inutilisé (tree shaking)
- Compressée - taille plus petite pour le transfert réseau
- Stable - exempte de messages de debug et d'outils de développement
Vite comme outil de build moderne
Vite (« rapide » en français) est un outil moderne de construction d'applications frontend qui accélère considérablement le processus de développement et de production. Contrairement aux outils plus anciens (comme Create React App), Vite utilise les modules ES natifs dans le navigateur pendant le développement et Rollup pour les builds de production.
Principaux avantages de Vite :
- Démarrage ultra-rapide du serveur de développement
- Rafraîchissement rapide (Hot Module Replacement)
- Builds de production efficaces
- Support de TypeScript, JSX, CSS, SCSS, Less et plus encore
- Configuration minimale avec flexibilité
Processus de build de production avec Vite
1. Préparer l'application pour le build
Avant de construire une application de production, il vaut la peine d'effectuer quelques étapes :
Vérifier les dépendances
Assure-toi que toutes les dépendances sont à jour et sécurisées :
1# Vérifier les paquets obsolètes
2npm outdated
3
4# Vérifier les vulnérabilités de sécurité
5npm audit
6
7# Mettre à jour les paquets (si c'est sûr)
8npm updateSupprimer les consoles et debuggers
Le code de production ne devrait pas contenir d'instructions console.log ou debugger. Tu peux utiliser un plugin Babel ou ESLint pour les supprimer automatiquement.
Pour Vite, tu peux ajouter le plugin vite-plugin-remove-console :
1npm install vite-plugin-remove-console --save-devEt le configurer dans vite.config.js :
1import { defineConfig } from 'vite';
2import react from '@vitejs/plugin-react';
3import removeConsole from 'vite-plugin-remove-console';
4
5export default defineConfig({
6 plugins: [
7 react(),
8 removeConsole()
9 ],
10});Définir les variables d'environnement
Vite prend en charge les variables d'environnement via les fichiers .env. Tu peux créer différents fichiers pour différents environnements :
.env- variables pour tous les environnements.env.development- uniquement pour le développement.env.production- uniquement pour la production
Les variables doivent commencer par le préfixe VITE_ pour être disponibles dans le code :
1# .env.production
2VITE_API_URL=https://api.yourdomain.com/v1
3VITE_ANALYTICS_ID=UA-123456789-1Dans le code, tu les utilises ainsi :
1const apiUrl = import.meta.env.VITE_API_URL;2. Construire l'application de production
Construire un build de production avec Vite est simple - il suffit d'exécuter la commande :
1npm run buildCette commande effectue plusieurs opérations :
- Transpile le code ES6+/TypeScript/JSX vers un format pris en charge par les navigateurs
- Minifie le code JavaScript et CSS
- Optimise les assets (images, polices)
- Génère des noms de fichiers hashés pour le cache busting
- Crée un bundle optimisé pour la production
Le résultat est un répertoire dist (par défaut) contenant l'application construite.
3. Tester le build de production en local
Avant le déploiement, il vaut la peine de vérifier si l'application construite fonctionne correctement. Vite fournit un outil simple pour servir localement le build de production :
1npm run previewCette commande démarre un serveur local servant l'application construite depuis le répertoire dist, te permettant de vérifier son fonctionnement avant le déploiement réel.
Déploiement sur Vercel
Vercel est une plateforme de déploiement d'applications frontend qui fonctionne à merveille avec React, Next.js et d'autres frameworks. Elle offre un CDN mondial, des déploiements automatiques depuis les dépôts Git, du HTTPS et bien d'autres fonctionnalités.
Pourquoi Vercel ?
- Zero-config - détection et configuration automatiques du framework
- CDN mondial - livraison rapide du contenu aux utilisateurs du monde entier
- Niveau gratuit - pour les projets personnels et open-source
- Preview deployments - chaque pull request génère un déploiement distinct
- Intégration Git - déploiement automatique à chaque push
- Fonctions serverless - possibilité d'ajouter un backend sans serveur séparé
Pas à pas : déployer une app Vite+React sur Vercel
1. Préparer le dépôt Git
Vercel s'intègre avec GitHub, GitLab et Bitbucket. Assure-toi que ton projet est stocké dans l'un de ces services :
1# Si tu n'as pas encore initialisé de dépôt
2git init
3
4# Ajouter les fichiers au dépôt
5git add .
6
7# Créer un commit
8git commit -m "Prepare for deployment"
9
10# Ajouter le dépôt distant (remplace l'URL par la tienne)
11git remote add origin https://github.com/your-username/your-project.git
12
13# Pousser les changements
14git push -u origin main2. Configurer le projet sur Vercel
Crée un compte sur Vercel - va sur vercel.com et inscris-toi (de préférence avec le même compte que ton service Git)
Importe le projet :
- Clique sur « Add New... » > « Project »
- Sélectionne ton dépôt dans la liste
- Vercel détectera automatiquement que tu utilises Vite
Configure le projet :
- Framework Preset : Vercel devrait détecter automatiquement Vite
- Build Command : Par défaut
npm run build(ne change rien) - Output Directory : Par défaut
dist(ne change rien) - Environment Variables : Ajoute les mêmes variables que dans
.env.production(sans le préfixeVITE_)
Clique sur « Deploy » et attends la fin du processus
3. Vérifier le déploiement
Une fois le déploiement terminé, Vercel affichera une page de résumé. Tu peux :
- Visiter ton site à l'adresse automatiquement attribuée (par exemple,
your-project.vercel.app) - Consulter les logs de build et de déploiement
- Configurer un domaine personnalisé
Configuration du déploiement continu (CI/CD)
Vercel configurera automatiquement le déploiement continu (Continuous Deployment) pour ton projet :
- Chaque push sur la branche principale (généralement
mainoumaster) déclenchera un déploiement vers l'environnement de production - Chaque pull request générera un « Preview Deployment » unique, te permettant de tester les changements avant de les merger dans la branche principale
Cette intégration crée un workflow simple et efficace :
- Tu travailles localement sur une nouvelle fonctionnalité
- Tu pousses les changements sur la branche
feature/new-feature - Tu crées une Pull Request
- Vercel crée automatiquement un Preview Deployment
- Tu testes les changements dans un environnement proche de la production
- Après approbation, tu merges la PR avec la branche principale
- Vercel met automatiquement à jour l'environnement de production
Optimisation du déploiement
1. Analyse des performances
Vercel offre des Analytics qui aident à surveiller les performances de l'application dans le monde réel :
- Real Experience Score - note de l'expérience utilisateur
- Core Web Vitals - métriques comme LCP, FID et CLS
- Métriques par page - quelles parties de l'application sont les plus lentes
Pour activer les Analytics :
- Va sur le projet dans Vercel
- Clique sur l'onglet « Analytics »
- Clique sur « Enable Analytics »
2. Optimisation des assets statiques
Vite optimise automatiquement les assets pendant le build, mais il vaut la peine de retenir quelques pratiques supplémentaires :
- Utilise des formats d'image modernes - WebP au lieu de JPEG/PNG
- Lazy loading - charge les images/composants uniquement au besoin
- Préchargement des assets critiques - ajoute des balises
<link rel="preload">pour les ressources critiques
3. Edge Functions et Edge Middleware sur Vercel
Pour des applications plus avancées, Vercel offre :
- Edge Functions - fonctions légères s'exécutant sur le réseau edge mondial
- Edge Middleware - code exécuté avant chaque requête
Exemple d'Edge Middleware pour rediriger les utilisateurs en fonction de leur localisation :
1// middleware.js
2export default function middleware(request) {
3 const country = request.geo.country || 'US';
4
5 // Rediriger les utilisateurs polonais vers la version polonaise du site
6 if (country === 'PL' && !request.nextUrl.pathname.startsWith('/pl')) {
7 return Response.redirect(new URL('/pl' + request.nextUrl.pathname, request.url));
8 }
9}
10
11export const config = {
12 matcher: ['/((?!api|_next/static|favicon.ico).*)'],
13};Bonnes pratiques de production
1. Surveillance des erreurs
Intègre un outil de surveillance des erreurs comme Sentry ou LogRocket :
1npm install @sentry/react1// src/main.jsx
2import React from 'react';
3import ReactDOM from 'react-dom/client';
4import * as Sentry from '@sentry/react';
5import App from './App';
6import './index.css';
7
8if (import.meta.env.PROD) {
9 Sentry.init({
10 dsn: import.meta.env.VITE_SENTRY_DSN,
11 integrations: [new Sentry.BrowserTracing()],
12 tracesSampleRate: 0.5,
13 });
14}
15
16ReactDOM.createRoot(document.getElementById('root')).render(
17 <React.StrictMode>
18 <App />
19 </React.StrictMode>
20);2. Code splitting
Découpe l'application en plus petits chunks chargés à la demande :
1import { lazy, Suspense } from 'react';
2
3// Au lieu de : import Dashboard from './Dashboard';
4const Dashboard = lazy(() => import('./Dashboard'));
5
6function App() {
7 return (
8 <div>
9 <Suspense fallback={<div>Chargement...</div>}>
10 <Dashboard />
11 </Suspense>
12 </div>
13 );
14}3. Progressive Web Apps (PWA)
Transforme ton application React en PWA en ajoutant un Service Worker et un manifest :
1npm install vite-plugin-pwa --save-dev1// vite.config.js
2import { defineConfig } from 'vite';
3import react from '@vitejs/plugin-react';
4import { VitePWA } from 'vite-plugin-pwa';
5
6export default defineConfig({
7 plugins: [
8 react(),
9 VitePWA({
10 registerType: 'autoUpdate',
11 includeAssets: ['favicon.ico', 'robots.txt', 'apple-touch-icon.png'],
12 manifest: {
13 name: 'Space Mission Control',
14 short_name: 'SpaceMission',
15 description: 'Application for managing space missions',
16 theme_color: '#ffffff',
17 icons: [
18 {
19 src: 'pwa-192x192.png',
20 sizes: '192x192',
21 type: 'image/png'
22 },
23 {
24 src: 'pwa-512x512.png',
25 sizes: '512x512',
26 type: 'image/png'
27 }
28 ]
29 }
30 })
31 ]
32});Résumé du processus de développement au déploiement
L'ensemble du processus de création et de déploiement d'une application React avec Vite se présente comme suit :
Développement
- Initialiser le projet avec Vite :
npm create vite@latest my-app --template react - Développer les fonctionnalités dans l'environnement local :
npm run dev - Tester les composants et les fonctionnalités
- Initialiser le projet avec Vite :
Préparation pour la production
- Supprimer les consoles et debuggers
- Configurer les variables d'environnement de production
- Vérifier et mettre à jour les dépendances
Construction
- Lancer le build de production :
npm run build - Tester l'application construite :
npm run preview
- Lancer le build de production :
Préparation du dépôt
- Initialiser le dépôt Git
- Commit et push vers le dépôt distant
Déploiement sur Vercel
- Connecter avec le dépôt Git
- Configurer le projet
- Déployer
Post-déploiement
- Configurer le domaine
- Activer les Analytics
- Surveiller les erreurs
- Optimiser les performances
Gérer l'application en production
Après avoir déployé l'application, tes responsabilités de développeur ne s'arrêtent pas. Il est important de continuer à :
- Surveiller les performances et les erreurs - vérifier régulièrement Vercel Analytics et les outils de suivi des erreurs
- Mettre à jour les dépendances - mettre à jour régulièrement les paquets, surtout pour les correctifs de sécurité
- Introduire de nouvelles fonctionnalités - tirer parti du workflow CI/CD pour introduire les changements en toute sécurité
- Tests A/B - tester de nouvelles fonctionnalités sur un sous-ensemble d'utilisateurs avant le déploiement complet
Fin du voyage cosmique
Nous avons terminé notre voyage cosmique à travers React ! En partant des bases, nous avons progressivement construit des composants de plus en plus avancés, jusqu'à une application complète prête à être déployée sur la plateforme Vercel.
Souviens-toi que, comme l'exploration spatiale, apprendre React est un voyage sans fin. L'écosystème React évolue constamment, de nouvelles bibliothèques, outils et patterns émergent. Reste à jour avec la documentation, les blogs et la communauté pour garder tes compétences actuelles.
Maintenant que ton vaisseau spatial est construit, testé et prêt à voler - il est temps de conquérir le cosmos des applications frontend !
Code de cette leçon : App.jsx
1import React from 'react';
2
3// Deploiement et construction d'une application de production
4export default function App() {
5 return (
6 <div style={{
7 background: '#0d1b2a', minHeight: '100vh',
8 padding: '20px', fontFamily: 'Arial', color: '#e0e1dd'
9 }}>
10 <h1 style={{ color: '#ffd700', textAlign: 'center' }}>
11 Déploiement sur Vercel
12 </h1>
13 <div style={{
14 background: '#1b2838', borderRadius: '12px',
15 padding: '20px', maxWidth: '600px', margin: '20px auto',
16 border: '1px solid #2a3f5f'
17 }}>
18 <h2 style={{ color: '#00d4ff' }}>Étapes du déploiement :</h2>
19 <ol style={{ color: '#e0e1dd', lineHeight: 1.8 }}>
20 <li>npm run build - build de production</li>
21 <li>Vérification du dossier build/</li>
22 <li>Déploiement sur Vercel/Netlify</li>
23 <li>Configuration des variables d'environnement</li>
24 </ol>
25 </div>
26 </div>
27 );
28}Tu as repéré une erreur dans cette leçon ?
Teste tes connaissances
Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.
1. Quelle est la convention de nommage standard des Higher-Order Components ?
2. Que fait React.lazy() et quand l'utilise-t-on ?
Voici 2 des 9 questions de cette leçon. Réponds aux autres dans le jeu.
Tâches pratiques dans le jeu
- Tri horizontal
Ordonne la syntaxe du hook useCallback avec une dépendance :
- Éditeur de code
useReducer pour un système d'alarme
- Tri vertical
Ordonne les étapes pour implémenter le code splitting dans une application React :
- Éditeur de code
Provider Composition avec des hooks
- Clique dans l'ordre
Ordonne le pattern Render Props :
- Tri horizontal
Ordonne la syntaxe du hook useMemo avec un tableau de dépendances :
- Tri vertical
Ordonne les patterns de gestion d'état React du plus simple au plus complexe :
- Tri vertical
Ordonne l'évolution de la gestion d'état en React :
- Clique dans l'ordre
Ordonne le pattern Render Props avec children comme fonction :