Node.js • Apprendre par la pratique. Familiarisez-vous avec JavaScript, Node.js et l'écosystème de modules npm. Apprenez à concevoir et à déployer des *applications web* et des *outils en ligne de commande*.
npm install nodebook> Familiarisez-vous avec JavaScript, Node.js et l'écosystème de modules npm.
Apprenez à concevoir et à déployer des applications web et
des outils en ligne de commande.
>
> Plus de 500 exemples pour apprendre en pratiquant.
✅ Versions couvertes • node v10 • npm v6.
📖 Journal de bord d'écriture • [2018][journal-2018] • [2017][journal-2017].
🔎 Lire l'ouvrage • sur papier • sur liseuse numérique • sur le web • sur npm.

| Chapitre | Objectif d'apprentissage | |
|---------------------------|--------- |---|
| [Avant-propos][preamble] | _pourquoi tu écris cet ouvrage ?_ | -
| [Histoire, écosystème et gouvernance][ch01] | _ça marche comment la vie de Node et des gens qui le font ?_ | [issues][ch01-issues]
| [Installer, mettre à jour et développer][ch02] | _ça marche comment Node sur une machine ?_ | [issues][ch02-issues]
| [Jouer avec JavaScript][ch03] | _ça marche comment JavaScript ?_ | [issues][ch03-issues]
| [Jouer avec Node.js][ch04] | _ça marche comment les modules ?_ | [issues][ch04-issues]
| [Jouer avec npm][ch05] | _ça marche comment l'outil npm ?_ | [issues][ch05-issues]
| [Déployer notre code][ch06] | _ça marche comment côté hosting ?_ | [issues][ch06-issues]
| [Créer une application web][ch07] | _ça marche comment HTTP ?_ | [issues][ch07-issues]
| [Créer un outil en ligne de commande][ch08] | _ça marche comment du code métier dans le terminal ?_ | [issues][ch08-issues]
| [Créer une application frontend][ch09] | _ça marche comment les modules Node dans les navigateurs web ?_ | [issues][ch09-issues]
| Annexe : [Sélection de modules npm][a01] | _quel(s) module(s) npm choisir ou découvrir ?_ | [issues][appendix-issues]
🌐 L’épreuve est consultable gratuitement à cette adresse : [oncletom.io/node.js/][livre-web].
De nombreux exemples sont interactifs, modifiables et affichent leur résultat depuis un simple navigateur web.
Fonctionnalités : exemples interactifs, vidéos, mise à jour en continu.
📱 L'e-book est édité et vendu par les Éditions Eyrolles.
Fonctionnalités : compact, chercher dans le contenu, rémunère mon travail.
📖 Le livre est édité, publié et distribué par les Éditions Eyrolles.
Il s'obtient de plusieurs manières :
* Commander et se faire livrer par Eyrolles
* Acheter en librairie indépendante, près de chez soi
* Se faire livrer par Amazon.fr
Fonctionnalités : confort de lecture, annotations libres, rémunère mon travail.
📦 Le livre est disponible en tant que module npm : [nodebook][livre-npm].
Fonctionnalités : apprendre Node.js avec Node.js, tous les exemples sont fonctionnels, lecture hors-ligne.
``bash`
$ npm install --global nodebook
$ nodebook install all
Cette commande télécharge une copie du livre et les dépendances des exemples pour une utilisation hors-ligne.
Le manuel d'utilisation s'invoque avec l'argument --help :
`bash
$ nodebook --help
Commandes:
nodebook chapters Liste les chapitres de l'ouvrage.
nodebook dir
nodebook install
nodebook read Démarre la lecture du livre au format HTML
Options:
--version Affiche le numéro de version [booléen]
--help Affiche de l'aide [booléen]
Exemples:
nodebook install chapter-04 Installe les dépendances du chapitre
4
nodebook install all Installe les dépendances de tous les
chapitres
cd $(nodebook dir chapter-04) Place le terminal dans le répertoire
d'exemples du chapitre 4
cd $(nodebook dir chapter-04 --root) Place le terminal dans le répertoire
racine du chapitre 4
`
Je vous invite à contribuer de la manière de votre choix — par e-mail, en ouvrant une _issue_ ou en contribuant du texte ou du code.
Si vous n'êtes pas sûr·e de votre coup mais que l'envie est là, c'est suffisant pour démarrer 🙂. Nous éclaircirons les choses ensemble.
Il est possible de travailler sur une copie locale de l'épreuve en la dupliquant avec Git.
`bash`
$ git clone --single-branch https://github.com/oncletom/nodebook
$ cd nodebookInstalle les dépendances de développement
$ npm ciInstalle les dépendances des chapitres
$ npm run install:all
Cette commande facultative récupère les vidéos localement :
`bash`
$ git lfs pull
Elle utilise l'extension git-lfs.
Un serveur local est disponible pour prévisualiser les modifications sans être connecté à Internet.
`bash`
$ npm start
L'épreuve est accessible sur http://localhost:3000.
La bonne santé des exemples est vérifiée à l'aide d'ESLint et de tape-spawn.
`bash`
$ npm test
| | Dépendances | Sécurité
| ------------|-------------------|---------
| Chapitre 1 | ![][ch01-deps] | ![][ch01-security]
| Chapitre 2 | ![][ch02-deps] | ![][ch02-security]
| Chapitre 3 | ![][ch03-deps] | ![][ch03-security]
| Chapitre 4 | ![][ch04-deps] | ![][ch04-security]
| Chapitre 5 | ![][ch05-deps] | ![][ch05-security]
| Chapitre 6 | ![][ch06-deps] | ![][ch06-security]
| Chapitre 7 | ![][ch07-deps] | ![][ch07-security]
| Chapitre 8 | ![][ch08-deps] | ![][ch08-security]
| Chapitre 9 | ![][ch09-deps] | ![][ch09-security]
| Annexe A | ![][a01-deps] | ![][a01-security]
`bash`
$ make build-html
$ open ./dist
`bash``
$ make build-odt
$ soffice ./dist/book.fodt
🙌 Merci à vous pour avoir contribué à l'ouvrage grâce à vos relectures, corrections et demandes de clarification.
![][contributors]
🙏 Merci à vous pour avoir contribué financièrement à l'écriture de l'ouvrage !
_Node.js • Apprendre par la pratique_ est un ouvrage rédigé par Thomas Parisot. Il est édité, publié et distribué en papier et e-book par les [Éditions Eyrolles][Eyrolles].
L’épreuve est soumise à la licence [Creative Commons NC-BY-SA 4.0][cc-nc-by-sa] (_Attribution, Non-Commercial, Share Alike_).
Les exemples de code sont placés sous la [licence MIT][].
[ci-linux]: https://travis-ci.org/oncletom/nodebook.svg?branch=master
[ci-windows]: https://ci.appveyor.com/api/projects/status/crewvvqeybl8f16c?svg=true&branch=master
[journal-2018]: docs/JOURNAL.md
[journal-2017]: docs/JOURNAL-2017.md
[livre-web]: https://oncletom.io/node.js/
[livre-npm]: https://npmjs.com/nodebook
[Eyrolles]: http://www.eyrolles.fr
[playlist]: https://open.spotify.com/user/oncletom/playlist/4Ywqaz0XpFVNa5CKohuUN8?si=edpuGs_NRgapHyigrrwU3w
[licence MIT]: LICENSE
[cc-nc-by-sa]: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr
[backers]: https://opencollective.com/nodebook#backers
[sponsors]: https://opencollective.com/nodebook#sponsor
[contributors]: https://github.com/oncletom/nodebook/graphs/contributors
[preamble]: foreword/preamble.adoc
[ch01]: chapter-01/index.adoc
[ch01-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:1
[ch01-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-01
[ch01-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-01/package.json
[ch02]: chapter-02/index.adoc
[ch02-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:2
[ch02-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-02
[ch02-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-02/package.json
[ch03]: chapter-03/index.adoc
[ch03-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:3
[ch03-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-03
[ch03-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-03/package.json
[ch04]: chapter-04/index.adoc
[ch04-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:4
[ch04-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-04
[ch04-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-04/package.json
[ch05]: chapter-05/index.adoc
[ch05-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:5
[ch05-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-05
[ch05-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-05/package.json
[ch06]: chapter-06/index.adoc
[ch06-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:6
[ch06-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-06
[ch06-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-06/package.json
[ch07]: chapter-07/index.adoc
[ch07-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:7
[ch07-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-07
[ch07-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-07/package.json
[ch08]: chapter-08/index.adoc
[ch08-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:8
[ch08-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-08
[ch08-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-08/package.json
[ch09]: chapter-09/index.adoc
[ch09-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:9
[ch09-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=chapter-09
[ch09-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=chapter-09/package.json
[a01]: appendix-a/index.adoc
[appendix-issues]: https://github.com/oncletom/nodebook/labels/:book:%20chapitre:annexes
[a01-deps]: https://david-dm.org/oncletom/nodebook/status.svg?path=appendix-a
[a01-security]: https://snyk.io/test/github/oncletom/nodebook/badge.svg?targetFile=appendix-a/package.json