Rappels sur Node.js
Installation et utilisation du REPL : présentation nvm&co
JavaScript côté serveur : démonstrations et premiers travaux pratiques
La ’single-threadedeventloop’
API non bloquante : intérêts
Aller plus loin avec les objets JavaScript : Object.create,Object.defineProperty
La programmation fonctionnelle : map, reduce, currying (illustration avec lodash)
La programmation asynchrone
Dompter le paradigme asynchrone
Les différentes API : callback et librairies associées, fibers, promesses
Les avantages et pièges à éviter
Gérer la soupe de callbacks avec Async
Les modules Node.js
Description
Fonctionnement
Structure
Écrire un serveur avec Node.js
Présentation
Démonstration
Les librairies d’accès aux bases de données
Présentation
NoSQL: MongoDB et Redis
Modélisation avec NoSQL
Différentes utilisations de Redis
Implémentation du modèle
Communication en temps réel
Définition et problématiques
Les technologies à disposition
Intégration des WebSockets HTML5 avec Socket.IO
Communication inter-process en temps réel
Le pub/sub avec Redis
AMQP dans Node JS
Présentation RabbitMQ et ZeroMQ
Event-loop distribuée
Les tests avec NodeJS
Tests unitaires avec Mocha (atelier)
Tests fonctionnels avec les headless browsers
Intégration avec npm
Gestion de la performance avec JavaScript et Node.js
Écrire du JavaScript performant pour V8 : les bonnes pratiques
Gestion de la mémoire : la pile et la mémoire totale, comment les gérer
Anticiper et trouver les fuites mémoire
Effectuer des calculs lourds : pool de workers, amqp…
Les Cluster
Utiliser tous les processeurs de sa machine
Cluster et données partagées
La solution haute performance Redis
Bonus spécial troll
Comparaison avec l’équivalent Apache/PHP
Qualité
Déboguer son application : utilisation du débuggeur v8
Profiling : état des lieux, outils