Du JavaScript côté serveur
- Genèse du JavaScript côté serveur et de Node.js.
- Le moteur Google V8 utilisé côté serveur.
- Pourquoi utiliser la programmation événementielle ?
- Rappels JavaScript : callbacks, closures, notion de scope, apply, bind, call.
- Initiation à ECMAScript 6.
Premiers pas en Node.js
- Installation du serveur Node.js.
- Le gestionnaire d'extensions NPM.
- L'approche modulaire de Node.js
- Un serveur Web en quelques lignes.
- Utilisation de Node.js en REPL.
Travaux pratiques
Usage de l'utilitaire NPM. Développer une première application.
Les fondamentaux Node.js
- Quel intérêt de développer en asynchrone ?
- La gestion événementielle : réagir plutôt qu'attendre.
- Principaux modules de l'API : console, util, file, events & timer...
- Gestion des requêtes/réponses HTTP. HTTPS.
- Création de processus fils, https, sockets TCP et UDP...
Travaux pratiques
Lecture de fichier, lecture d'une ressource en ligne, création d'un processus fils avec communication IPC.
La gestion de routes
- Parsing d'URL (paramètres, requête...).
- Traiter une requête en mode asynchrone.
- Mettre en place un gestionnaire de routes.
Travaux pratiques
Mise en place d'un gestionnaire de routes.
Framework Web Express
- Les concepts fondamentaux d'Express.
- Construction d'un squelette d'application.
- Configuration d'Express et de l'application.
- Le rendu de vues avec EJS.
- La gestion de formulaires et des uploads de fichiers.
- Le routage d'URL par Express.
- Mise en place d'une API REST.
Travaux pratiques
Mise en place d'une API REST complète.
Persistance des données
- Initiation à une base NoSQL : MongoDB.
- Mise en place de CRUD (Create, Read, Update, Delete).
- Utilisation d'un ODM : Mongoose.
Travaux pratiques
Gestion d'une persistance au travers d'un ODM avec création des modèles.
Test d'une application Node.js
- Premiers pas avec Mocha.
- Les assertions et le test synchrone et asynchrone.
- Différentes méthodes de tests (inclusifs, exclusifs...).
Travaux pratiques
Tester une application avec Mocha.
Concept avancés
- Bonnes pratiques de développement en Node.js.
- La bibliothèque async : rendre l'asynchrone séquentiel.
- Le clustering avec Node.js. La retro-compatibilité, les transpilers...