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 et os

  • fs et path

  • 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

Développer une API GraphQL

  • Petit topo sur GraphQL

  • Concevoir un schéma pertinent

  • Auditer la performance

  • Tester une API GraphQL

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