
Maîtriser Node.js de débutant à expert
Devenez un expert Node.js ! Formation complète pour maîtriser JavaScript serveur, de l'installation aux déploiements avancés. Projets pratiques, Express, NestJS, API & bases de données.
Table des matières
- Introduction à Node.js et à son environnement
- Qu'est-ce que Node.js ?
- Installation et configuration de l'environnement
- Téléchargement et installation de Node.js (différentes méthodes)
- Utilisation de NVM (Node Version Manager)
- Installation et gestion des dépendances avec npm (Node Package Manager)
- Introduction à yarn : un gestionnaire de paquets alternatif
- Configuration d'un environnement de développement (IDE, outils)
- Votre premier programme "Hello, World!" en Node.js
- Les bases du JavaScript pour Node.js
- Le coeur de Node.js : Asynchronisme et modules
- Le modèle asynchrone de Node.js
- Gestion de l'asynchronisme avancé
- Le système de modules Node.js
- Introduction aux modules : organisation du code
- Modules CommonJS : require() et module.exports
- Modules ES (ECMAScript Modules) : import et export
- Création et publication de vos propres modules npm
- Modules natifs de Node.js (core modules) : fs, http, path, etc.
- Résolution de modules et gestion des conflits
- Manipulation des données et du système
- Gestion des flux de données (Streams)
- Introduction aux streams : pourquoi utiliser des flux ?
- Types de streams : Readable, Writable, Duplex, Transform
- Lecture et écriture de données avec les streams
- Gestion des erreurs et des événements de cycle de vie des streams
- Pipes : connecter les streams entre eux
- Exemples pratiques : streaming de fichiers, traitement de données en temps réel
- Interaction avec le système de fichiers (fs)
- Lecture de fichiers (synchrone et asynchrone)
- Ecriture de fichiers (synchrone et asynchrone)
- Création, suppression et renommage de fichiers et de répertoires
- Gestion des permissions et des métadonnées des fichiers
- Surveillance des changements dans le système de fichiers (fs.watch)
- Utilisation de chemins relatifs et absolus (module path)
- Buffers : manipulation de données binaires
- Gestion des flux de données (Streams)
- Développement d'applications web avec Node.js
- Création d'un serveur HTTP
- Express.js : le framework web incontournable
- Installation et configuration d'Express.js
- Gestion des routes : définir les points d'accès de votre API
- Middlewares : traitement des requêtes en amont
- Gestion des paramètres de requête (query parameters, route parameters)
- Envoi de données JSON et HTML
- Utilisation de moteurs de template (EJS, Pug, Handlebars)
- Gestion des données côté serveur
- Introduction aux bases de données (SQL et NoSQL)
- Connexion à une base de données MySQL avec le module mysql
- Connexion à une base de données MongoDB avec le module mongodb ou Mongoose
- Création, lecture, mise à jour et suppression de données (CRUD)
- Modélisation des données avec Mongoose (schémas, modèles)
- Validation des données et gestion des erreurs
- Authentification et autorisation
- Concepts de base : authentification vs. autorisation
- Mise en place d'un système d'authentification simple (avec sessions)
- Utilisation de JWT (JSON Web Tokens) pour l'authentification
- Gestion des rôles et des permissions (autorisation)
- Sécurisation des API avec des middlewares d'authentification
- Intégration avec des fournisseurs d'identité tiers (OAuth 2.0)
- WebSockets : communication en temps réel
- Tests, débogage et performances
- Tests unitaires et d'intégration
- Importance des tests : qualité et maintenabilité du code
- Frameworks de test : Jest, Mocha, Chai
- Ecriture de tests unitaires : tester des fonctions individuelles
- Ecriture de tests d'intégration : tester l'interaction entre les modules
- Mocking et stubbing : isoler les dépendances lors des tests
- Couverture de code (code coverage)
- Débogage et profilage
- Utilisation du débogueur intégré de Node.js
- Débogage avec les outils de développement du navigateur (Chrome DevTools)
- Utilisation de `console.log` et d'autres outils de logging
- Profilage des performances : identifier les goulots d'étranglement
- Outils de profilage avancés (clinic.js, 0x)
- Gestion des erreurs et des exceptions : try...catch, uncaughtException
- Optimisation des performances
- Tests unitaires et d'intégration
- Architecture, bonnes pratiques et déploiement
- Architecture et patterns de conception
- Bonnes pratiques de développement Node.js
- Gestion de la configuration (dotenv, config)
- Gestion des secrets (ne jamais stocker de mots de passe en clair !)
- Utilisation d'un linter (ESLint) et d'un formateur de code (Prettier)
- Documentation du code (JSDoc)
- Gestion des versions avec Git et GitHub
- Sécurité : prévention des attaques courantes (XSS, CSRF, SQL injection)
- Déploiement d'applications Node.js
- Préparation de l'application pour la production
- Utilisation de PM2 pour gérer les processus Node.js
- Déploiement sur un serveur traditionnel (VPS, serveur dédié)
- Déploiement sur une plateforme cloud (Heroku, AWS, Google Cloud, Azure)
- Utilisation de Docker pour conteneuriser les applications
- Introduction au serverless (AWS Lambda, Google Cloud Functions, Azure Functions)
- Outils, écosystème et concepts avancés
- Etudes de cas et projets pratiques