Node.js – appelons-le Node dès à présent – est né dans le cerveau de Ryan Dahl, ancien étudiant sans le sou et au parcours informatique atypique. Son talent a été de s’obstiner à résoudre un problème d’expérience utilisateur fréquent sur le web : l’attente devant un navigateur web figé. Son but ? Rendre possible et facile la création de barres de progression dans les navigateurs web.

J’ai utilisé Node pour la première fois en 2010, par curiosité. Nous en étions alors à la version 0.4. Créer mon propre serveur HTTP était un concept qui semblait étrange, habitué que j’étais à écrire des applications PHP et à les mettre derrière un serveur Apache – nginx commençait à peine à décoller.

L’effet "wahou" était pourtant là : une installation en quelques secondes, quelques lignes de JavaScript et j’avais une API REST câblée avec une base de données CouchDB pour impressionner mes collègues.

Je bascule dans un contexte startup fin 2011 : nous sommes quatre développeurs avec des bagages différents. Nous voulions un langage commun pour le back-end et le front-end. Nous partons sur Node, installé sans encombre sur notre serveur dédié géré par l’hébergeur AlwaysData. Nous avions la sensation de progresser rapidement. Nous allions réellement vite.

Depuis, de nombreuses entreprises ont communiqué sur leur adoption de Node : Paypal, LinkedIn, eBay, Airbnb, British Gas, Allociné, The New York Times, Yahoo!, Microsoft, Mozilla, Flickr ou encore Twitter. Ces entreprises l’utilisent pour façonner leur outillage métier, gérer les transactions bancaires, leurs serveurs LDAP, des services ou des sites web.

Pourquoi ce livre ?

Je trouve que Node est un environnement élégant et agréable. Je prends beaucoup de plaisir à l’utiliser au quotidien, mais je regrette l’accent placé sur la nouveauté permanente et la sur-ingénierie des articles et ouvrages en langue française.

Node est mon outil de travail principal depuis 2011 et je fais quasiment tout avec – y compris l’outillage de publication de cet ouvrage. J’avais envie de communiquer sur la simplicité, l’architecture modulaire et la versatilité de Node pour que vous puissiez progresser dans l’usage de JavaScript, façonner votre propre outillage et pour mieux utiliser les ressources des systèmes d’exploitation.

Je vous propose donc un contenu moins technique que d’ordinaire, orienté sur l’apprentissage par la pratique et des concepts qui durent dans le temps. Cet ouvrage s’installe avec Node : tous les exemples sont réels et fonctionnent dans votre terminal.

Indirectement, je souhaite déconstruire la posture d’expert et de lecteur en me mettant à vos côtés pendant votre apprentissage. Une partie des contenus a été conçue et relue en ateliers collectifs pour que la progression se fasse de manière naturelle.

À qui s’adresse cet ouvrage ?

J’ai écrit cet ouvrage avec trois profils de lecteurs en tête : des personnes qui souhaitent se mettre à Node sans savoir par où commencer, celles et ceux qui font du front-end et souhaitent mieux comprendre leur outillage et celles qui veulent renforcer leurs connaissances en Node et JavaScript afin de changer de travail/métier.

Cet ouvrage s’adresse aussi à des lecteurs qui ne programment pas pour gagner leur vie mais qui veulent mieux comprendre de quoi parlent les développeurs et développeuses. Je pense que les interactions de travail sont de meilleure qualité quand nous comprenons les problématiques de celles et ceux avec qui nous travaillons.

Structure de l’ouvrage

Cet ouvrage se lit dans l’ordre de votre choix.

J’ai fait en sorte que la lecture soit progressive, du plus simple au plus complexe. Le contenu des chapitres explore une problématique et se termine souvent sur une section avancée, pour aller plus loin.

Cette édition est composée de neuf chapitres et d’une annexe :

  1. Histoire, écosystème et gouvernance
    D’où vient Node et qui sont les acteurs participant à son histoire ?

  2. Installer, mettre à jour et développer
    Être autonome pour installer Node.js sur notre ordinateur ou un serveur, se tenir au courant des mises à jour et jongler entre différentes versions. Découvrir des outils confortables pour écrire du code.

  3. Jouer avec JavaScript
    Comprendre les différences entre JavaScript, ECMAScript, le DOM et Node.js. Revoir les bases du langage pour se sentir plus à l’aise.

  4. Jouer avec Node.js
    S’exercer avec des scripts et des modules Node.js : les nôtres, ceux fournis par Node et ceux de la communauté.

  5. Jouer avec npm
    Apprendre à tirer parti de l’outil livré par défaut avec Node.js. S’amuser à créer nos propres outils dignes d’artisans du logiciel.

  6. Déployer notre code
    Déployer notre code le plus tôt possible pour célébrer notre premier programme !

  7. Créer une application web
    Créer une application web en partant de zéro, en utilisant un framework puis en parlant à une base de données. Bienvenue dans l’odyssée d’une requête HTTP !

  8. Créer un outil en ligne de commande
    Rendre du code métier fonctionnel dans un terminal ; la ligne de commande ne paraîtra plus aussi austère.

  9. Créer une application front-end
    Utiliser la richesse de l’écosystème npm et profiter des modules pour écrire des applications front-end de qualité.

L’annexe complète l’ouvrage avec une sélection de modules npm, pour démarrer plus vite et mieux cerner ce qu’on peut faire avec Node.

💡
Ressources Contenu en livre libre accès

Le contenu de cet ouvrage est actualisé en permanence sur oncletom.io/node.js/.

L’intégralité du code source du livre et des exemples sont hébergés sur github.com/oncletom/nodebook. J’utilise la plate-forme collaborative GitHub pour recueillir vos avis, corrections et suggestions.

Remerciements

Cet ouvrage a été rédigé sur près de quatre années – longue est la liste des personnes à remercier. Longue aussi est la liste de celles et ceux à qui je demande pardon pour mes sautes d’humeur, mes absences ou mes passages à vide. L’écriture sur une longue durée est une activité que je trouve éprouvante. Elle nécessite un ajustement permanent vis-à-vis de moi-même pour ne pas (trop) en souffrir.

Mes premiers remerciements vont à Noémie. Ta joie, tes encouragements et ta présence sont essentiels à mon équilibre. Ils m’emplissent de confiance, m’inspirent et atténuent les peurs qui me paralysent.

Je remercie Karine, Laurène, Elsa et Alexandre des Éditions Eyrolles pour cette opportunité. Vous avez fait preuve d’une patience et d’une confiance infinies malgré le délai d’écriture.

Je tiens à remercier mes anciens collègues de BBC R&D pour leur soutien, leur confiance et leur tolérance aux jeux de mots. Olivier, Sean, Katie, Chris N et Chris L : c’était un plaisir et un honneur d’être à vos côtés.

Certain·e·s d’entre vous m’ont beaucoup aidé par leurs conseils, leurs relectures et leurs encouragements. Alors un grand merci pour cela à Béa, Claire, Clémentine, David, Efi, Fabien, Frank, Philippe, Stéphane et Thierry.

Merci à l’équipe d’Asciidoctor pour leur travail précieux et leurs réponses à mes innombrables questions. Je pense notamment à Guillaume et à Dan.

Merci à Antoine pour notre travail en duo sur l’écriture numérique. Je suis fier d’apporter ce mode d’écriture dans les communautés académiques, du design et des archivistes.

Enfin, je remercie toutes les personnes qui m’ont accueilli chez elles, dans leur maison, dans leur bureau ou dans leur communauté/meet-up pendant mon écriture itinérante en 2017 et 2018.

Bonne lecture,

Thomas