Node.js

Découvrir et maîtriser Node.js tout en professionnalisant et industrialisant vos pratiques de développement JavaScript

Objectifs

La formation Node.js vous donne toutes les clés pour bien démarrer avec Node.js tout en professionnalisant et industrialisant vos pratiques de développement JavaScript. Elle permet aux apprenants de :

  • savoir installer et mettre à jour Node.js et npm,
  • découvrir, installer et mettre à jour des modules Node,
  • travailler efficacement avec Node au moyen d’un outillage permettant un cycle rapide de développement,
  • manipuler élégamment des agencements complexes de code asynchrone, notamment à l’aide du module async et des promesses,
  • connaître et exploiter au mieux les modules noyaux fournis avec Node,
  • comprendre et maîtriser des technologies pivots de Node telles que les événements et les flux,
  • structurer leur code dans le respect des meilleures pratiques Node, tant pour la partie serveur que côté client,
  • tester automatiquement leur code, au niveau unitaire mais aussi en intégration complète,
  • documenter leur code source de façon immédiatement utile et exploitable,
  • packager leurs applications en modules publiables,
  • traiter au mieux les problématiques courantes : serveur web, templating, ORM, NoSQL, WebSockets…

Attention : le code source de la formation est intégralement en ES2015.

Il s’agit donc non pas d’une « simple » formation technique, mais véritablement d’un ensemble complet de savoir-faire qui donne non seulement les clés d’une fonctionnalité immédiate, mais aussi les moyens de produire du code maintenable et qualitatif sur la durée.

Public visé

Une connaissance décente de JavaScript est nécessaire, même si les aspects avancés seront revus en profondeur le 1er jour ; tout développeur web front utilisant déjà quotidiennement JavaScript, même si c’est essentiellement au travers de jQuery, a normalement les connaissances nécessaires. Toutefois, il peut être utile de « préparer le terrain » en amont pour fluidifier l’acquisition de connaissances une fois en formation. Les futurs apprenants auront alors tout intérêt à puiser dans cette liste de contenus de qualité compilée par Christophe.

Cette préparation est également très souhaitable pour un développeur back-end qui n’aurait jamais touché à JavaScript.

Programme

Jour 1 — Mise en jambe Node et JavaScript avancé

On y découvre Node, son utilisation directe et son système de modules, mais on prend aussi le temps de voir ou revoir des mécanismes JavaScript avancés de structuration de code qui permettent de maintenir un niveau de qualité et de lisibilité élevé du code dans un contexte massivement asynchrone.

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 »

ES2015+

  • Rappels sur l’historique ES3, ES5, ES2015, ES2016…
  • Compatibilité native Node
  • Transpiling avec Babel
  • Expérimentation interactive et ressources d’approfondissement
  • Littéraux objets et nouvelle syntaxe de classes
  • Déstructuration
  • Rest et Spread
  • Valeurs par défaut
  • Template strings
  • let et const
  • Fonctions fléchées et préservation de portée lexicale
  • Modules ES2015

Découpage en modules

  • Modules configurables
  • Initialisation déportée
  • Modules Node
  • Chargeurs de modules et syntaxes alternatives
  • Chemins de recherche et détails de require

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 avec q.js
  • Versions « promesses » d’API asynchrones usuelles
  • async / await

npm (début)

  • packaging de modules
  • rechercher des modules
  • installer en local
  • dépendances de production et de développement
  • la fin des conflits de version

Jour 2 — Le cœur de Node

Node, ce n’est pas que des applications web avec Express ! Cette journée explore les modules noyaux, les mécanismes incontournables d’événements et de flux, et attaque la mise en place de tests automatisés, indispensables à l’industrialisation et à la qualité de notre code.

npm (suite)

  • 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

Flux et buffers

  • Types de flux
  • Modes de fonctionnement et bascule entre modes
  • Buffers
  • Encodages de texte
  • Pipelining
  • Stream all the things!

Tester et déboguer (début)

  • Topo sur les tests automatisés : unitaires, intégration…
  • Modules d’assertion : assert et Chai
  • Un harnais de tests riche avec Mocha

Jour 3 — Une application web avancée

Tout en finissant d’explorer les tests automatisés, on réalisera une application web mettant en œuvre nombre de technologies incontournables et fortement associées à l’univers Node.

Tester et déboguer

  • Isolation des tests unitaires avec SinonJS
  • Pistes pour des tests automatisés multi-navigateurs
  • Déboguer du code Node avec un vrai débogueur moderne

Développer une application web en Node

  • Structure de l’application
  • La couche HTTP fournie par Node
  • Express et Connect : présentation, installation et configuration
  • Une première page
  • Réagir aux changements de code avec nodemon
  • Templating avec Pug (Jade)
  • Layouts
  • Mixins
  • Modèles relationnels et ORM
  • Persistence MongoDB avec Mongoose
  • Authentification avec Passport

Profiter des modules dans un navigateur

  • Webpack
  • Partage de code entre les couches serveur et client

Jour 4 — Des outils en plus et le déploiement en production

Cette 4ème et dernière journée finalise l’application web, voit comment la documenter utilement, passe en revue quelques modules supplémentaires fréquemment utiles et termine en explorant les options de déploiement en production.

Développer une application web en Node (fin)

  • Connexions client/serveur temps réel avec les Web Sockets

Documenter le code de façon utile

  • Types de documentation de code
  • Sources annotés
  • Docco

Quelques petits modules fréquemment utiles

  • underscore
  • mkdirp
  • debug
  • event-stream
  • nconf
  • moment
  • request
  • colors
  • optimist et commander
  • eventemitter2

Déployer du code Node

  • 12 Factors
  • Sur Heroku
  • Sur StrongLoop / LoopBack
  • Sur AWS
  • Sur mon propre serveur
  • Monitoring interne avec pm2
  • Monitoring externe avec NewRelic

Moyens pédagogiques et techniques, suivi et appréciation

Les apprenant·e·s reçoivent, chaque début de journée, l’ensemble des diapositives du support de cours au format web, afin de pouvoir faciliter leur suivi du plan de cours.

Après la session, ils reçoivent par ailleurs, avec un e-mail de debrief très fourni et riche en ressources, une archive de référence, contenant les codebases finalisées, entièrement documentées et testées, les slides de toute la formation et diverses ressources complémentaires.

Demander une convention de formation

Tarifs indicatifs

Nombre de placesTarif
1 à 2 personnes  2 000 € HT
3 à 5 personnes  1 800 € HT
À partir de 6 personnes  1 600 € HT