• 199 € ou 5 paiements mensuels de 39,80 €

Module avancé

Maîtrise le JavaScript en apprenant les concepts avancés du langage et la programmation moderne ES2024.

Ce module est le dernier module qu'il est nécessaire de suivre pour avoir une maîtrise suffisante du langage JavaScript pour postuler avec confiance à un emploi de développeur junior. Grâce à ce module tu produiras du code moderne et concis lors des entretiens techniques pour valoriser ton profil et décrocher ton premier job.

Prérequis

Tu devras avoir suivi les modules débutant et intermédiaire.

Avoir suivi le module algorithmique n'est pas obligatoire mais fortement recommandé si ta logique pêche un peu. En effet je ne m'attarderai pas sur les explications des algorithmes que nous utiliserons dans ce module car il y aura déjà beaucoup de choses à dire sur les nouvelles fonctionnalités du JavaScript !

Objectifs de ce module

  • Maîtriser le langage JavaScript moderne

  • Connaître les avantages et inconvénients des différentes façons de faire la même chose avec ce langage pour choisir la bonne façon de faire selon ton contexte

  • Savoir lire et moderniser du code legacy pour te préparer au monde de l'entreprise

Le code legacy

Lorsqu'on décroche son premier job en entreprise, il est rare de travailler sur du code neuf ou de développer à partir de zéro le produit ou service que l'entreprise vend.

En général, on travaille sur une base de code déjà existante que les clients utilisent au quotidien. C'est ce code qui tourne sur les serveurs accessibles au public et qui délivre le service vendu par l'entreprise. C'est ce qu'on appelle du code en production.

Une grande partie de ce code est très souvent vieux car développé initialement il y a plusieurs années par une petite équipe à la naissance de l'entreprise. Il peut être mal maintenu ou rafistolé dans tous les sens. Il utilise même de vieilles technologies parfois, de vieilles versions des outils ou du langage lui-même (ES5 avec le mot-clé var par exemple etc.).

On qualifie ce code de code legacy (legacy signifie héritage en français).

Le but d'une entreprise est de faire de l'argent, pas d'avoir le code source le plus propre et moderne du monde*. En effet le client final s'en moque tant que le service fonctionne.

En règle général, tu risques de rencontrer du vieux code qu'il faudra comprendre et savoir moderniser, c'est l'un des objectifs de ce module. Toutes les formations qui enseignent le JavaScript t'expliquent comment écrire du JavaScript moderne ES6+ mais aucune ne t'apprend à lire et comprendre du vieux code.

Pourtant c'est indispensable pour travailler d'une part sur du code legacy en entreprise et pour comprendre d'autre part les évolutions du langage.

Dans ce module, tu apprendras à lire et à moderniser du code legacy ce qui te permettra de comprendre (et d'apprendre) pourquoi et d'où viennent les nouveautés apportées au langage JavaScript dans les versions ES6 et suivantes.

Grâce à de nombreux exemples on verra les avantages à utiliser du code moderne dans nos programmes et les différences parfois subtiles qu'il y a entre un vieux code et un nouveau écrit en ES6+.

---
* Maintenir du code legacy et développer de nouvelles fonctionnalités par dessus engendre des coûts de maintenance croissants dans le temps. On délivre de moins en moins vite de nouvelles fonctionnalités aux clients et le produit devient plus lent, moins performant et souvent bogué, ce qui fait perdre de l'argent à l'entreprise.

Celles-ci ont enfin pris conscience de ce problème important et certaines mettent en place des outils et des techniques de développement modernes pour maintenir le code de leur produit ou service : tests unitaires, fonctionnels, intégration continue, architecture logicielle adaptée, etc. pour permettre de délivrer fréquemment un code moderne de qualité (et non bogué !) à leurs clients.

C'est pour ça que la culture software craftsmanship, les méthodes agiles, la programmation fonctionnelle et tout un tas d'autres méthodes modernes deviennent de plus en plus utilisées en entreprise : faire du code propre et moderne rapporte de l'argent sur le long terme.

Malheureusement, le nombre d'entreprises ayant les moyens financiers (mais surtout la volonté !) d'emprunter cette voie reste faible par rapport aux autres. C'est pourquoi ce module vous préparera à travailler sur du code legacy pour vous permettre de vous adapter à un environnement hostile 😉.

Quel est le "bon" code ?

Deuxième objectif de ce module : te fournir les connaissances nécessaires pour pouvoir faire toi-même le choix du bon outil à utiliser selon ton contexte. En effet, en JavaScript, il est possible de rédiger plusieurs codes sources différents qui font la même chose. Mais alors, lequel choisir ? Quel est le "bon" ?

On verra dans ce module les avantages, les inconvénients et surtout les différences entre les anciennes instructions et les instructions modernes proposées par ce langage.

Le contexte dans lequel on travaille va souvent jouer un rôle majeur dans le choix de l'instruction à utiliser en JavaScript. Par exemple : pourquoi et quand préférer une boucle for...of à la méthode forEach sur un tableau ? Quelles différences si je choisis l'une ou l'autre façon de faire ?

Une garantie satisfait ou remboursé

La formation JavaScript de Zéro est disponible avec une garantie "satisfait ou remboursé" de 14 jours, qui te permet d’obtenir un remboursement si tu n’es pas satisfait de la qualité de la formation ou de son contenu. Tu ne prends donc aucun risque à l'acheter dès maintenant.

Sommaire des leçons

Le contenu est en cours de création.

Introduction

Le contenu de ce module est en cours de création.
C'est l'heure !
La valeur -0 et Object.is()
Les timestamps
Le format JSON

Type de données

Le type BigInt
Quiz #1

De nouveaux opérateurs

Les courts-circuits
L'opérateur de coalescence des nuls
L'opérateur de chaînage optionnel
Aperçu
Exercices remaniement de code

Les boucles

La méthode forEach()
Les boucles for...of
Les boucles for...in
Quelle façon de boucler choisir ?

Autres opérateurs

L'opérateur in
L'opérateur virgule

Gestion des erreurs

La syntaxe try... catch

Les tableaux

La méthode filter()
On recode filter() de zéro !
La méthode map()
On recode map() de zéro !
La méthode reduce()
On recode reduce() de zéro !
Choisir entre filter(), map() et reduce()
Le chaînage de méthodes
La méthode some()
Précision sur some() et every()
La méthode every()
La méthode at()
Challenge : recodez some() et every() !
Solution au challenge

Les objets

Nouveautés ES6 sur les objets
Accesseurs de propriétés (Getters et Setters)

Types de données avancés

Avant-propos
Introduction au ramasse-miettes (garbage collector)
Aperçu
WeakMap et WeakSet
Aperçu
TypedArray
Les symboles
Les itérables et itérateurs

La décomposition (destructuring)

Assignation par décomposition de tableaux
Décomposition et itérateurs
Assignation par décomposition d'objets
L'opérateur spread

Les fonctions

Qu'est-ce que le hoisting ?
Valeurs par défaut des paramètres
Décomposition dans les paramètres de fonctions
Fonctions variadiques (paramètres du reste)
Nouvelle syntaxe de définition d'une méthode
Le mot-clé this
Les fonctions fléchées
Les fonctions fléchées et this
thisArg et les méthodes sur les tableaux
Les méthodes call() apply() et bind()
Les fonctions imbriquées
La portée lexicale
Aperçu
Les closures
Aperçu
Les closures : exemple supplémentaire
Aperçu
IIFE
Les générateurs

L'héritage par prototypes

Préambule
Introduction
Les prototypes
Les fonctions constructeurs
Constructeurs et prototypes
Propriétés et méthodes statiques
Object.create()
Ce qu'il faut retenir
Exemple d'héritage

Les classes

Les classes
Classes VS Constructeurs
Les classes sont des fonctions

Les modules

Le mode strict
Introduction aux modules
Les modules CommonJS
Modules ES6
CommonJS VS Modules ES6
Exemple module ES6 dans un site web
Utiliser un package npm
Remaniement de code

Le JavaScript asynchrone

Les débuts du web
XMLHttpRequest
Callback hell
Les promesses
Projet API GitHub avec les promesses
Projet API GitHub avec fetch
Comment mixer les modules ESM et CommonJS ?
La syntaxe async await

Fin du module

Derniers conseils

Une question ? Contacte-moi !

➡️ Par téléphone ou WhatsApp : 06 67 40 56 09
➡️ Par email : jeremy@javascriptdezero.com