JavaScript - Perfectionnement

Maîtriser le JavaScript moderne : asynchronisme, modules, POO et bonnes pratiques ES2020+

Formation créée le 02/04/2026.
Version du programme : 2

Type de formation

Présentiel

Durée de formation

21 heures (3 jours)

Accessibilité

Oui
Cette formation est gratuite.
S'inscrire
Cette formation est gratuite.
S'inscrire
Cette formation est gratuite.
S'inscrire

JavaScript - Perfectionnement

Maîtriser le JavaScript moderne : asynchronisme, modules, POO et bonnes pratiques ES2020+


Vous maîtrisez les bases de JavaScript et souhaitez écrire un code plus robuste, plus lisible et aligné sur les standards actuels : cette formation vous emmène vers le JavaScript moderne, de l'asynchronisme avancé aux modules natifs, en passant par la programmation orientée objet, les patterns fonctionnels et les outils de qualité.

Objectifs de la formation

  • Exploiter les fonctionnalités modernes de JavaScript (ES2015 à ES2020+) de façon maîtrisée
  • Comprendre et appliquer les mécanismes avancés du langage : portée, fermetures, prototype, this
  • Mettre en oeuvre la programmation asynchrone avec Promises et async/await
  • Structurer son code avec les modules ES natifs et les patterns de conception courants
  • Consommer des API REST avec Fetch et gérer les erreurs de façon robuste
  • Appliquer les principes de la programmation fonctionnelle en JavaScript
  • Ecrire des tests unitaires et utiliser les outils de débogage modernes
  • Produire un code lisible, maintenable et conforme aux bonnes pratiques actuelles

Profil des bénéficiaires

Pour qui
  • Développeurs web et chefs de projet techniques ayant une pratique courante de JavaScript et souhaitant monter en compétences sur les fonctionnalités modernes du langage, les patterns avancés et les bonnes pratiques de développement.
Prérequis
  • Bonne pratique de JavaScript : syntaxe, variables, fonctions, manipulation du DOM et gestion des événements.
  • Notions de HTML et CSS.
  • Aucune connaissance de frameworks (React, Angular, Vue) n'est requise.

Contenu de la formation

Fondements avancés et évolutions ECMAScript
  • Rappel du modèle d'exécution JavaScript : moteur V8, call stack, event loop, heap
  • Portée et fermetures (closures) : comprendre le scope lexical, les IIFE, les cas d'usage pratiques
  • var, let et const : différences de portée, hoisting, bonnes pratiques
  • Destructuring : tableaux, objets, valeurs par défaut, renommage
  • Spread et rest operators : cas d'usage en pratique
  • Template literals : interpolation, multi-lignes, tagged templates
  • Optional chaining (?.) et nullish coalescing (??) : écrire un code défensif sans conditions imbriquées
  • Fonctionnalités et API modernes utiles du langage et de la plateforme : Array.flat(), Object.entries(), String.replaceAll(), structuredClone(), at()
Programmation orientée objet et système de prototypes
  • Le modèle prototypal de JavaScript : chaîne de prototypes, Object.create(), différences avec les langages à classes classiques
  • Syntaxe class ES2015+ : constructeur, méthodes, héritage avec extends et super
  • Encapsulation : champs privés avec # (ES2022), getters et setters
  • Méthodes statiques et champs statiques
  • this en JavaScript : liaisons implicite, explicite (call, apply, bind) et dans les arrow functions
  • Design patterns courants en JavaScript : Module pattern, Factory, Observer/EventEmitter
Programmation fonctionnelle en JavaScript
  • Fonctions pures et effets de bord : principes et intérêt pour la maintenabilité
  • Fonctions d'ordre supérieur : map, filter, reduce -- cas d'usage avancés, composition
  • Immutabilité : travailler avec des données sans les muter (spread, structuredClone, Object.freeze)
  • Currying et composition de fonctions
  • Mémoïsation : principe et implémentation simple
  • Comparaison approche impérative vs fonctionnelle sur un cas concret
Asynchronisme moderne, Promises et async/await
  • Rappel du modèle asynchrone JavaScript : callbacks, problèmes du callback hell
  • Promises : création, chaînage (.then, .catch, .finally), états (pending, fulfilled, rejected)
  • Gestion des erreurs avec les Promises : rejections non gérées, bonnes pratiques
  • async/await : syntaxe, gestion des erreurs avec try/catch/finally
  • Méthodes avancées de Promise : Promise.all(), Promise.allSettled(), Promise.race(), Promise.any()
  • Top-level await : fonctionnement, usages pertinents et limites d'interopérabilité
  • Pièges courants : await dans les boucles, parallélisation vs séquentialisation
Modules ES natifs et organisation du code
  • Les modules ES (ESModules) : import/export, named exports, default exports, re-exports
  • Modules statiques vs import() dynamique : lazy loading, code splitting
  • Gestion des dépendances circulaires : comprendre et éviter
  • Organisation d'un projet JavaScript modulaire : structure de fichiers, barrel files
  • Bundlers en contexte : rôle de Vite, Webpack, Rollup -- ce qu'ils apportent au-delà des modules natifs
  • npm et gestion des packages : package.json, lock files, dépendances de développement vs production
Fetch API, communication avec les API REST et gestion des erreurs
  • Fetch API : syntaxe, options (méthode, headers, body), comparaison avec XMLHttpRequest
  • Gérer les codes de statut HTTP : pourquoi Fetch ne rejette pas sur les erreurs 4xx/5xx
  • Envoyer des données : JSON, FormData
  • Gestion robuste des erreurs : distinguer erreurs réseau et erreurs applicatives
  • Intercepteurs et wrappers Fetch : abstraire les appels HTTP dans des services
  • AbortController : annuler une requête en cours
  • Cas d'usage avancés : pagination, retry automatique, gestion du cache
Tests unitaires en JavaScript
  • Pourquoi tester : valeur des tests unitaires, différences avec les tests d'intégration et E2E
  • Ecosystème de test JavaScript : Jest et Vitest, deux solutions courantes selon le contexte projet et l'environnement d'exécution
  • Ecrire un test unitaire : describe, it/test, expect et matchers courants
  • Tester des fonctions pures, des classes, des modules
  • Mocking : principes et outils selon l'environnement retenu (Jest ou Vitest), mocker des modules et des appels Fetch
  • Tester du code asynchrone : async/await dans les tests, fakeTimers
  • Couverture de code : ce qu'elle mesure et ses limites
  • Introduction au TDD : écrire le test avant le code sur un exemple simple
Débogage et optimisation des performances
  • Chrome DevTools : inspection du call stack, breakpoints, watch expressions, inspection de la mémoire
  • Débogage du code asynchrone : breakpoints asynchrones, suivi des Promises
  • Analyse des performances : flamegraph, CPU profiling, détection des fonctions lentes
  • Fuites mémoire en JavaScript : causes courantes (références oubliées, closures, event listeners non retirés), détection avec le Memory panel
  • Optimisations pratiques : debounce et throttle, lazy evaluation, éviter les rendus inutiles dans le DOM
  • Linting et formatage : ESLint (règles recommandées pour JavaScript moderne), Prettier
Bonnes pratiques, patterns avancés et plan d'action
  • Gestion avancée des erreurs : classes d'erreur personnalisées, Error.cause (ES2022), pattern result vs exception
  • WeakMap et WeakSet : cas d'usage pour la gestion de métadonnées sans fuite mémoire
  • Iterators et generators : protocole iterable, function*, yield, cas d'usage concrets (pagination lazy, flux de données)
  • Proxy et Reflect : intercepter les opérations sur les objets, validation automatique, réactivité
  • Internationalisation native : Intl.NumberFormat, Intl.DateTimeFormat, Intl.RelativeTimeFormat
  • Bonnes pratiques de code : nommage, fonctions courtes et focalisées, éviter les effets de bord implicites, documentation JSDoc
  • Plan d'action individuel : chaque participant identifie les trois points du langage qu'il va appliquer immédiatement dans son projet

Équipe pédagogique

Formateur expert en développement JavaScript et front-end moderne, intervenant en environnement professionnel sur des projets d'application web.

Suivi de l'exécution et évaluation des résultats

  • Auto-positionnement en amont (questionnaire)
  • Evaluation formative pendant la formation (travaux pratiques)
  • Evaluation des acquis en fin de formation (quiz)
  • Evaluation de satisfaction à chaud

Accessibilité

Cette formation est accessible aux personnes en situation de handicap. Merci de nous contacter en amont afin d'étudier les aménagements nécessaires.