Node.js
Programme
Trouver ses marques
Bonjour Node !
- Méthodes d’installation et de mise à jour
- Node, l’historique en 5 minutes
- Mon premier programme
- Exécuter un fichier JS
- Un exemple un peu plus riche
- Shebangs et fichiers « exécutables »
Gestion des modules de Node
- Modules configurables
- Initialisation déportée
- Modules Node
- Chargeurs de modules et syntaxes alternatives
- Chemins de recherche et détails de
require
Déboguer
- Avec Visual Studio Code
- Avec Google Chrome
- Quelques mots sur WebStorm et les autres
- Concilier débogage et nodemon
Tester
- Topo sur les tests automatisés : unitaires, intégration…
- Un harnais de tests riche avec Jest
- Des assertions riches avec Chai
- Mocking de méthodes, d’objets et de modules
npm
- Packaging de modules
- Rechercher des modules
- Installer en local ou en global
- Dépendances de production et de développement
- La fin des conflits de version
-
package.json
en détail
Quelques modules noyaux
console
-
process
etos
-
fs
etpath
util
- Objets globaux
- Revue rapide des autres modules noyaux
Événements
- Le module
events
EventEmitter
- Intégrer une capacité événementielle à du code existant
Compétences clés
Programmation asynchrone
- Callbacks
- “Callback Hell” et “Pyramid of Doom”
- Réduire l’imbrication à l’aide des déclarations
- Les callbacks façon Node
- Combinaisons complexes avec
async.js
- Promesses : principes, exemples et mise en œuvre native
- Versions « promesses » d’API asynchrones usuelles
-
async
/await
Flux et buffers
- Types de flux
- Modes de fonctionnement et bascule entre modes
- Buffers
- Encodages de texte
- Pipelining
- Stream all the things!
Bonnes pratiques de base de sécurité
- Mises à jour de Node lui-même ; versions standard et LTS
- Dépréciation des API noyau présentant un risque
-
npm audit
,npm audit fix
- Node Security Project
- Node Certified Modules
- Audit automatique de vulnérabilités sur GitHub
- Scripts à l’installation
- Gestion des credentials et secrets
- Choisir intelligemment ses algorithmes de chiffrement
- Principes généraux de stockage de données
- Services tiers d’interception dynamique d’attaque
Stockage moderne avec MongoDB
- Principes de NoSQL
- Présentation de MongoDB
- Quelques mots sur CouchDB, ElasticSearch, Firebase…
- L’API native de MongoDB
- Gagner en confort avec Mongoose
- Aperçu des clients graphiques (ex. dbKoda, Robo 3T, Compass)
Développer une API REST
- Rappels sur REST
- Hypermédia
- Versions
- Formats variables
- Tester une API REST
Frameworks
- Juste Express ?
- Restify
- Quelques mots sur Feathers, Fastify, Loopback…
Développer une API GraphQL
- Petit topo sur GraphQL
- Concevoir un schéma pertinent
- Auditer la performance
- Tester une API GraphQL
Frameworks
- Juste GraphQL.js ?!
- Apollo 2
- Quelques mots sur Prisma et Relay
Sécuriser une API
- Validation des requêtes
- Rate limiting : variantes REST et GraphQL
- Authentification : tokens ou sessions ?
- À propos de JWT…
- Autorisation
- 2FA / MFA
- CORS
Déployer un serveur API
- « À la main »
- Sur des PaaS : Heroku, Azure, GCP, Now
Microservices, Serverless et FaaS
- Principe des microservices / fonctions
- Pooling de connexions, files de messages, etc.
- Déploiement FaaS : Azure, GCP, AWS Lambda
Frameworks
- Serverless
- Quelques mots sur Arc, Micro, Seneca, Moleculer…