GithubHelp home page GithubHelp logo

thom4parisot / nodebook Goto Github PK

View Code? Open in Web Editor NEW
304.0 16.0 73.0 31.01 MB

📖 Livre publié aux Éditions Eyrolles • Première édition : Node.js v10 et npm v6.

Home Page: https://apprendre-nodejs.fr/v1/

License: Other

JavaScript 96.65% Makefile 0.07% HTML 0.33% CSS 2.80% Dockerfile 0.02% Less 0.02% EJS 0.02% Handlebars 0.01% Pug 0.01% SCSS 0.03% Nunjucks 0.04%
javascript nodejs frontend book francais learning-by-doing learn-to-code learning-js learning-exercise asciidoctor

nodebook's Introduction

Node.js • Apprendre par la pratique Build Linux Build Windows Backers on Open Collective

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 v10npm v6.
📖 Journal de bord d'écriture2018 • 2017.
🔎 Lire l'ouvragesur papiersur liseuse numériquesur le web • sur npm.

Couverture du livre « Node.js »

Table des matières

Chapitre Objectif d'apprentissage
Avant-propos pourquoi tu écris cet ouvrage ? -
Histoire, écosystème et gouvernance ça marche comment la vie de Node et des gens qui le font ? issues
Installer, mettre à jour et développer ça marche comment Node sur une machine ? issues
Jouer avec JavaScript ça marche comment JavaScript ? issues
Jouer avec Node.js ça marche comment les modules ? issues
Jouer avec npm ça marche comment l'outil npm ? issues
Déployer notre code ça marche comment côté hosting ? issues
Créer une application web ça marche comment HTTP ? issues
Créer un outil en ligne de commande ça marche comment du code métier dans le terminal ? issues
Créer une application frontend ça marche comment les modules Node dans les navigateurs web ? issues
Annexe : Sélection de modules npm quel(s) module(s) npm choisir ou découvrir ? issues

Lire l'ouvrage

Sur le web

🌐 L’épreuve est consultable gratuitement à cette adresse : apprendre-nodejs.fr/v1/.

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.

Sur liseuse numérique

📱 L'e-book est édité et vendu par les Éditions Eyrolles.

Fonctionnalités : compact, chercher dans le contenu, rémunère mon travail.

Sur papier

📖 Le livre est édité, publié et distribué par les Éditions Eyrolles.

Il s'obtient de plusieurs manières :

Fonctionnalités : confort de lecture, annotations libres, rémunère mon travail.

Avec Node.js

📦 Le livre est disponible en tant que module npm : nodebook.

Fonctionnalités : apprendre Node.js avec Node.js, tous les exemples sont fonctionnels, lecture hors-ligne.

$ 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 :

$ nodebook --help

Commandes:
  nodebook chapters               Liste les chapitres de l'ouvrage.
  nodebook dir <chapter>          Affiche le chemin vers un chapitre.
  nodebook install <chapter|all>  Installe les dépendances d'un chapitre.
  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

Contribuer au contenu

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.

Installation de la copie de travail

Il est possible de travailler sur une copie locale de l'épreuve en la dupliquant avec Git.

$ git clone --single-branch https://github.com/thom4parisot/nodebook
$ cd nodebook
# Installe les dépendances de développement
$ npm ci
# Installe les dépendances des chapitres
$ npm run install:all

Cette commande facultative récupère les vidéos localement :

$ git lfs pull

Elle utilise l'extension git-lfs.

Prévisualisation des changements

Un serveur local est disponible pour prévisualiser les modifications sans être connecté à Internet.

$ npm start

L'épreuve est accessible sur http://localhost:3000.

Tests

La bonne santé des exemples est vérifiée à l'aide d'ESLint et de tape-spawn.

$ npm test

État des dépendances

Dépendances Sécurité
Chapitre 1
Chapitre 2
Chapitre 3
Chapitre 4
Chapitre 5
Chapitre 6
Chapitre 7
Chapitre 8
Chapitre 9
Annexe A

Génération des épreuves

HTML

$ make build-html
$ open ./dist

OpenDocument

$ make build-odt
$ soffice ./dist/book.fodt

Contributrices et Contributeurs

🙌 Merci à vous pour avoir contribué à l'ouvrage grâce à vos relectures, corrections et demandes de clarification.

🙏 Merci à vous pour avoir contribué financièrement à l'écriture de l'ouvrage !

Mentions légales

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.

L’épreuve est soumise à la licence Creative Commons NC-BY-SA 4.0 (Attribution, Non-Commercial, Share Alike).
Les exemples de code sont placés sous la licence MIT.

nodebook's People

Contributors

amanda-martinez avatar borisschapira avatar chriscamicas avatar dirtyf avatar enguerran avatar forresst avatar ggrossetie avatar gurvanhenry avatar jbpionnier avatar jdesboeufs avatar jersou avatar julienpradet avatar laureneg avatar lellex avatar lespacedunmatin avatar lgiraudel avatar loicm avatar macxim avatar makio135 avatar malavia avatar maxdow avatar michelc avatar nerocro avatar nhoizey avatar p45qu10u avatar pblayo avatar snyk-bot avatar sphinxknight avatar thom4parisot avatar webaaz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nodebook's Issues

on/off/emit

Ca peut valoir le coup de présenter l'API on/off/once/emit.
Peut-être parallèle avec l'API d'event DOM.

cc @DavidBruant

Chapitre 3 : double appel à `uppercaseAsync` ?

Dans message-abbr-promisified.js, il me semble que la fonction uppercaseAsync est appelé 2 fois (alors qu'une fois devrais suffire):

module.exports = function messageAbbr(message){
  return new Promise(function(resolve, reject){
    return uppercaseAsync(message)
      .then(uppercaseAsync)
      .then(splitWordsAsync)
      .then(abbreviateAsync)
      .then(resolve)
      .catch(reject);
  });
};

Chemin du fichier data/books.csv

$ node chapter-02/examples/src/print-csv.js
/Users/frank/github/nodebook/chapter-02/examples/src/print-csv.js:13
    throw err;
    ^

Error: ENOENT: no such file or directory, open '/Users/frank/code/nodebook/chapter-02/examples/src/data/books.csv'

Afin de permettre l'exécution du script print-csv.js, le dossier data devrait se trouver dans le répertoire src, or il est dans le répertoire parent.

  • soit on met le code du script à jour en construisant le chemin en ajoutant .. pour qu'il fonctionne,
  • soit on déplace le dossier data et cela demande aussi de modifier le code asciidoc.

Parallélisme

Compliqué et limites par rapport à d'autres langages.

Feedback chapitre 1

Excellent chapitre, j'y ai beaucoup appris !

Voici quelques retours :

  • Historique du projet: "Alors qu’il cherche à effectuer des petits boulots, il y rencontre un autre Américain développant des sites web." : est-ce important de préciser qu'il rencontre un autre Américain ?
  • Typo sur Nginx (Ngninx)
  • JSLint prend un L majuscule
  • "Node utilise également V8 pour les mêmes raisons : parser et compiler JavaScript." est-ce possible que tu voulais dire "compiler et exécuter JavaScript" ?
  • "libuv a été créée pour les besoins propre de Node" : "propre" ne s'accorde-t-il pas ?
  • "libuv implémente notamment la fameuse boucle événementielle (voir ci-après), la file de priorité (priority queue)" : si "file de priorité" est traduit, alors "boucle événementielle" devrait l'être aussi, non ?

Chapitre 1, SemVer

Dans la brève description de SemVer j'ajouterais que le numéro d'une version majeure égale à 0 est considérée comme étant en dev, non stable, et par conséquent ne suit pas la règle de versionning précitée (MAJEUR.MINEUR.CORRECTIF).

Cf. http://semver.org/lang/fr/#spec-item-4

Mots manquants dans le chapitre 3

Dans le chapitre 3:

Au lieu d’exécuter trois la fonction messageAbbr, nous voulons au contraire exécuter trois traitements différents sur le résultat.

Je pense que ça devrait être (au moins pour le sens):

Au lieu d’exécuter successivement les trois fonctions uppercaseAsync, splitWordsAsync et abbreviateAsync sur le résultat de la fonction précédente, nous voulons au contraire exécuter trois traitements différents sur le résultat.


Dans tous les cas, un grand merci pour ce livre très intéressant et bien écrit! (j'ai enfin vraiment compris ce qu'était Node grace à la phrase "Node est une API JavaScript pour manipuler des ressources système.")

Bonnes pratiques pour des applications robustes

  • Gestion des erreurs
  • Erreurs courantes
  • Environnements de configuration
  • Sécurité
  • Logging
  • Débogage
    1. Prévenir les plantages
      1. Erreurs et exceptions
      2. Le problème des exceptions
      3. De l'utilisation des domains
      4. Écouter les évènements système
    2. Cas typiques de code à surveiller
      1. Erreurs de syntaxe
      2. Typage inattendu
      3. Valeurs nulles
      4. Upload de fichiers
      5. Évènements via .on('error')
      6. Callbacks
      7. Épuisement de mémoire
      8. Race condition
    3. Sécurité des données
      1. Données malicieuses
      2. Infiltration du système de fichier
      3. Échapper les données consommées par les utilisateurs
      4. RegExp
      5. CSRF
      6. XSS
      7. Attaques par injection
    4. Déboguer son code
      1. Node.js en mode debug avec node --debug
      2. Module node-debug
      3. Webstorm IDE
    5. Tester son code
      1. Configurer son package.json
      2. Écrire les tests
      3. Exécuter les tests
      4. Utilisation des espions, bouchons etc. avec Sinon.js
      5. Connaître sa couverture de code avec blanket
    6. Intégration et déploiement continu
    7. Principes
    8. Travis CI
    9. Coveralls
    10. Jenkins
    11. Strider
    12. Codeship
  • Node.js avancé
    1. De la bonne utilisation de package.json
    2. npm
      1. Dépendances optionnelles (optionalDependencies)
      2. Dépendances de pairs (peerDependencies)
      3. Variables d'environnement
      4. npm run-script
      5. Geler les versions avec npm shrinkwrap
      6. Développer son module Node.js avec npm link
    3. Node.js sans JavaScript
      1. ECMAScript 6 avec traceur
      2. TypeScript
    4. npm sans Node.js
      1. Composants Web
      2. Mozilla Jetpack
      3. libc
      4. Titanium
    5. node-gyp ou écrire en C++ pour libuv
    6. Flags avancés (node --v8-options)

Feedback chapitre 2

Globalement très bon chapitre, j'ai beaucoup appris en tant que débutant !

  • [1, 2, 3].join(', ')+'… soleil'; espaces manquantes autour du +
  • explication de every, some, map, reduce… : super bien
  • explication de defineProperty : l'exemple est le meilleur jamais vu de l'histoire des livres sur JS
  • defineProperty: quand on fait cssBook.EAN13 = '978-2212136401';, la méthode set est automatiquement appelée ? C'est quoi la magie ?
  • exec devrait être test dans :

    À la manière de exec, la méthode test se contente de renvoyer un booléen si un motif a été trouvé ou non :
    /(.+)(Script)/.exec('ECMAScript');

  • "Techniquement parlant, un module est fichier JavaScript" : manque "un" entre "est" et "fichier"
  • currency-main et currency-format m'ont vraiment aide a comprendre comment marchait bind, très bons exemples !
  • __filename et __dirname semblent être interprétés en tant que italique a certains endroits
  • Dans le CSV, "Javascript the Definitive Guide": le S de Javascript devrait être capitalisé
  • " _ Et ça tombe bien, " (y'a un underscore de trop non ?)

Finaliser le chapitre 3

  • Gruntfile
  • Gulpfile
  • npm - request
  • introduire les streams par une requête HTTP écrivant vers fs
  • parler des streams Readable et Writable avant d'enchaîner sur les exemples existants, plus complexes
  • conclusion

Compléter le chapitre 2

Certaines parties sont encore manquantes :

  • script shell
  • SublimeText
  • Brackets
  • vim
  • Visual Studio
  • conclusion

vars argv = require('yargs').argv;

Dans vars argv = require('yargs').argv;

  • Que signifie vars, faute de frappe ?
  • Et que fait .argv? (je m'en doute mais ce n'est pas explicité dans l'exemple)

Introduction à UNIX

Parce que ça permet de lier JavaScript + Node.js

  • argv
  • streams
  • long running process / thread / mémoire

Chapitre 2, coquille

Cette variable magique contient systématiquement la résultat de la dernière évaluation de code.

Handling CodeBlocks

 <style:style style:name="P144" style:family="paragraph" style:parent-style-name="Preformatted_20_Text">
<text:p text:style-name="P140">Array.some</text:p>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.