214
15/01/2016 1 Formation NodeJS, les fondamentaux alphorm.com™© Formation Les fondamentaux de NodeJS Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : [email protected]

Alphorm.com Formation NodeJS, les fondamentaux

Embed Size (px)

Citation preview

Page 1: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

1

Formation NodeJS, les fondamentaux alphorm.com™©

FormationLes fondamentaux de

NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 2: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

2

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Présentation du formateur

• Plan de formation

• Objectifs de la formation

• Public concerné

• Les possibilités de NodeJS

• Les connaissances requises

Page 3: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

3

Formation NodeJS, les fondamentaux alphorm.com™©

Présentation du formateur

Edouard FERRARI• [email protected]

• Développeur full stack chez Summview

• Mission de conseil, d’architecture et de migration

• Mes références :

� LinkedIn : https://fr.linkedin.com/in/edouardferrari

� Alphorm : http://www.alphorm.com/formateur/edouard-ferrari

� Github : https://github.com/didouard

Page 4: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

4

Formation NodeJS, les fondamentaux alphorm.com™©

Plan de la formation• Présentation et introduction de la formation

� Présentation de la formation

� Scénario de la formation

� Installation de NodeJs

� Premier projet "Hello World"

� Les IDE

• Rappel des bonnes pratiques JavaScript� Visibilité des variables

� Les fonctions et les objets

� Héritage

� This / Context, Bind, Call, Apply

• Introduction à NodeJS� Origine de NodeJS

� Le moteur d’interprétation Chrome V8

• Architecture de Node.js

� Programmation par callbacks

� Synchrone vs Asynchrone

� Programmation par callback avancée

• Module et gestion des dépendances� L’approche modulaire

� NPM: Le manager des modules

� Le fichier package.json en détail

� Publier un module sur NPM

� Modules: Process, OS, Path et Util

� Modules : Buffer / File System / ReadLine / Stream

� Module : Console / Error / Timer

� Module : Events / EventEmitter2 / EventEmitter3

� Module : URL / HTTP / Https / Net / UDP

� Module : Child Processes / Cluster

Page 5: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

5

Formation NodeJS, les fondamentaux alphorm.com™©

Objectifs de la formation• Un court rappel du langage JavaScript.

• Voir comment NodeJS fonctionne

• Étude du développement par évènement, par callback et par fonctionasynchrone.

• Bien comprendre les modules natifs de NodeJS.

• Comprendre la philosophie globale de NodeJS

Page 6: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

6

Formation NodeJS, les fondamentaux alphorm.com™©

Public concerné• À qui s’adresse cette formation :

� Aux étudiants

� Aux développeurs

� Aux chefs de projet

� Aux amoureux des nouvelles technologies

� Ceux qui veulent découvrir l’event coding et l’asynchrone

� Ceux qui ont besoin d’une architecture robuste, scalable et modulaire

� Pour un projet orienté Web ou pour un projet back

• Les possibilités sont infinies et immenses !

Page 7: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

7

Formation NodeJS, les fondamentaux alphorm.com™©

Les possibilités de NodeJS• Serveur et site internet complexe

• Application console

• Service réseau sur mesure (Proxies, gestion réseau, …)

• Application avec GUI (Graphical User Interface)

• Outils en ligne de commandes

• APIs

• Support des sockets

• Chargement du code node au premier appel HTTP

Page 8: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

8

Formation NodeJS, les fondamentaux alphorm.com™©

Les connaissances requises• Au minimum :

� Connaissance de base en Javascript

� Autodidacte

� Connaissance globale en programmation

� Connaissance en réseau / internet

• Les plus :

� Connaissance en asynchrone

� Connaissance en event-driven architecture

Page 9: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

9

Formation NodeJS, les fondamentaux alphorm.com™©

Liens et ressources• NodeJS API : https://nodejs.org/api/ !!!

• Projet github en nodejs : https://github.com/search?utf8=%E2%9C%93&q=nodejs

• Stackoverflow : http://stackoverflow.com/tags/node.js

• Nodecloud : http://www.nodecloud.org/

Page 10: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

10

Formation NodeJS, les fondamentaux alphorm.com™©

Are you ready ? ☺

Page 11: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

11

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Scénario de la formation

Présentation et introduction de la formation

Page 12: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

12

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Formation

• Side project : Blackhole

Page 13: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

13

Formation NodeJS, les fondamentaux alphorm.com™©

Formation• La formation est une première partie de la formation complète de

NodeJs.

• Dans cette première partie, nous verrons ensemble :

� Comment installer NodeJS et l’utiliser

� Un rapide rappel de JavaScript

� Comprendre les origines de NodeJS et sa philosophie

� L’architecture de NodeJS, comment composer nos futurs projets

� Les modules natifs

• La seconde formation verra les modules plus utilisés et les plus connus. Tout pour être 100% indépendant en NodeJS.

Page 14: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

14

Formation NodeJS, les fondamentaux alphorm.com™©

Side Project : Blackhole• Tout au long de la formation, nous travaillerons sur un projet

• Ce projet a pour but de reproduire le comportement d’un aspirateur de site.

• Avec NodeJs, ce genre de programme est très facile à développer et peut être fait en quelques heures.

Page 15: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

15

Formation NodeJS, les fondamentaux alphorm.com™©

Side Project : Blackhole

www.tf1.fr

www.tf1.fr/image.png

www.tf1.fr/news

www.tf1.fr/news/1

www.tf1.fr/news/2

www.tf1.fr/news/3www.tf1.fr/script.js

Page 16: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

16

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Les cours, les exercices et le “side-project” sont complémentaires.

• Nous allons voir beaucoup de code.

• Vous pouvez télécharger toutes les sources dans votre espaceutilisateur sur Alphorm.com

• Prochaine vidéo: L’installation de NodeJs

Page 17: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

17

Formation NodeJS, les fondamentaux alphorm.com™©

Installation de NodeJS

Présentation et introduction de la formation

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 18: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

18

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Les versions

• Installation avec les installeurs

• Installation avec les sources

Page 19: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

19

Formation NodeJS, les fondamentaux alphorm.com™©

Les versions• Depuis le 12 octobre 2015, NodeJS LTS « Long Time Support » est

disponible.

• 18 mois de support, soit jusqu’en avril 2017

• Cette année sera en version 4.x.x

• L’année prochaine en octobre 2015, une LTS 5.x.x sortira

Page 20: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

20

Formation NodeJS, les fondamentaux alphorm.com™©

Les versions

Page 21: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

21

Formation NodeJS, les fondamentaux alphorm.com™©

Installation avec les installateurs

• Site officiel : https://nodejs.org

• https://nodejs.org/en/download/

Page 22: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

22

Formation NodeJS, les fondamentaux alphorm.com™©

Installation à partir des sources• Site officiel : https://nodejs.org

• https://nodejs.org/en/download/

• Pourquoi ?

• Ubuntu / Debian

apt-get install make g++ libssl-dev git

Page 23: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

23

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Les versions

• Installation avec les installeurs

• Installation avec les sources

Page 24: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

24

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Premier projet « Hello World »

Présentation et introduction de la formation

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 25: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

25

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• REPL

• Premier programme

• Premier programme HTTP

Page 26: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

26

Formation NodeJS, les fondamentaux alphorm.com™©

REPL• NodeJS REPL « Read-Eval-Print-Loop »

Page 27: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

27

Formation NodeJS, les fondamentaux alphorm.com™©

Premier programme

Page 28: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

28

Formation NodeJS, les fondamentaux alphorm.com™©

Premier programme HTTP

Page 29: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

29

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvertNous avons appris :

• Comment tester rapidement un portion de code

• Comment lancer un plus gros projet

Page 30: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

30

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Les IDEs

Présentation et introduction de la formation

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 31: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

31

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Qu’est-ce qu’un IDE ?

• Les IDE les plus connus / utilisés

• 9 Cloud

Page 32: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

32

Formation NodeJS, les fondamentaux alphorm.com™©

Qu’est ce qu’un IDE?• « Integrated Development Environment »

• Est un software qui permet de faciliter le développement d’un programme.

• Il est composé :

� D’un éditeur de code source

� D’un « builder » automatique

� D’un debugger

• La plupart des IDEs font de l’auto complétion.

• D’autres fonctionnalités : Etudes de l’exécution, Heap management, …

Page 33: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

33

Formation NodeJS, les fondamentaux alphorm.com™©

Les IDE

Atom Brackets Eclipse IDE

Sublime Text JetBrains IntelliJ IDEA Netbeans

Les clients lourds (Desktop IDE)

Page 34: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

34

Formation NodeJS, les fondamentaux alphorm.com™©

Les IDE

Codeanywhere.com Koding.com 9Cloud

IDE en ligne (Online code editors)

Page 35: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

35

Formation NodeJS, les fondamentaux alphorm.com™©

9 Cloud

Allez sur http://c9.io

• Le principe

• Le pricing

• Création d’un compte

• Décomposition de l’interface & debug

• Installation en local

Page 36: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

36

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous sommes prêt pour réellement commencer la formation !

• Nous savons comment lancer et tester nos programmes

• Nous avons un IDE

Page 37: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

37

Formation NodeJS, les fondamentaux alphorm.com™©

Visibilité des variables

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Rappel des bonnes pratiques Javascript

Page 38: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

38

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Les scopes

• Les closures

• Les problèmes liés aux boucles

Page 39: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

39

Formation NodeJS, les fondamentaux alphorm.com™©

Les scopes

• Un scope est un ensemble où les variables et les fonctions sont accessibles entre elles.

• Un scope peut être local ou global

Page 40: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

40

Formation NodeJS, les fondamentaux alphorm.com™©

Les closures

• Les closures sont des variables qui vont pouvoir être accédé depuis les fonctions définies en dessous d’elle-même.

Page 41: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

41

Formation NodeJS, les fondamentaux alphorm.com™©

Les problèmes liés aux boucles

• Dans le cas de fonction asynchrone, le temps que la callback soit rappelée, l’itérateur de la boucle est à son maximum.

Page 42: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

42

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons :

� Les scopes.

� Vu que JavaScript nous permet d’accéder aux variables de fonctions parents grâce aux closures.

� Vu comment gérer les problèmes liés aux boucles.

Prochaine vidéo :

� Les fonctions et les objets

Page 43: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

43

Formation NodeJS, les fondamentaux alphorm.com™©

Les fonctions et les objets

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Rappel des bonnes pratiques Javascript

Page 44: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

44

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Les fonctions

� basiques

� Anonymes

• Les objets

� Natifs

� Instanciations

� Constructeurs

� Énumérer ses propriétés

Page 45: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

45

Formation NodeJS, les fondamentaux alphorm.com™©

Les fonctions

Basiques

Page 46: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

46

Formation NodeJS, les fondamentaux alphorm.com™©

Les fonctions

Anonymes

Page 47: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

47

Formation NodeJS, les fondamentaux alphorm.com™©

Les objets

Les objets natifs

Page 48: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

48

Formation NodeJS, les fondamentaux alphorm.com™©

Les objets

Les objets instanciés

Page 49: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

49

Formation NodeJS, les fondamentaux alphorm.com™©

Les objets

Les constructeurs

Page 50: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

50

Formation NodeJS, les fondamentaux alphorm.com™©

Les objets

Énumérer ses propriétés

Page 51: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

51

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert

• Nous avons passé en revue les fonctions et les objets en JavaScript

• Prochaine vidéo sur l’héritage

Page 52: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

52

Formation NodeJS, les fondamentaux alphorm.com™©

L’héritage

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Rappel des bonnes pratiques Javascript

Page 53: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

53

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Les instances

• Les prototypes

• Héritage par copie des prototypes

• Héritage par prototypes chainés

Page 54: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

54

Formation NodeJS, les fondamentaux alphorm.com™©

L’héritage

Les instances

Page 55: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

55

Formation NodeJS, les fondamentaux alphorm.com™©

L’héritage

Les prototypes

Page 56: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

56

Formation NodeJS, les fondamentaux alphorm.com™©

L’héritage

Héritage par copie des prototypes

Page 57: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

57

Formation NodeJS, les fondamentaux alphorm.com™©

L’héritage

Héritage par prototypes chainés

Page 58: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

58

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert

• L’héritage et ses limites

• Prochaine vidéo, les contextes.

Page 59: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

59

Formation NodeJS, les fondamentaux alphorm.com™©

This / Context, Bind, Call, Apply

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Rappel des bonnes pratiques Javascript

Page 60: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

60

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Qu’est-ce que le contexte et ‘this’ ?

• Bind

• Apply / Call

Page 61: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

61

Formation NodeJS, les fondamentaux alphorm.com™©

Qu’est-ce que le contexte et ‘this’ ?• Le contexte est un objet spécifique à JavaScript qui ne peut être

instancié et qui reçoit, en début d’interprétation du code, une série de propriétés utilisables à travers l’ensemble du code.

• À chaque instanciation d’objet, crée un nouveau contexte.

• On peut accéder au contexte grâce au mot ‘this’

Page 62: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

62

Formation NodeJS, les fondamentaux alphorm.com™©

Bind

• Avec JavaScript, la fonction bind() permet d’attacher un contexte à la fonction appelée.

• Mais aussi de paramétrer la fonction appelée avec des arguments endur.

Page 63: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

63

Formation NodeJS, les fondamentaux alphorm.com™©

Apply / Call• Apply et Call sont deux fonctions qui peuvent être appelées à chaque

fonction.

• Elles permettent d’appeler la fonction avec les arguments en argument.

Page 64: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

64

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert

• Nous avons fini avec les importants rappels sur le JS.

• Nous sommes prêts pour passer à NodeJS !

Page 65: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

65

Formation NodeJS, les fondamentaux alphorm.com™©

Origine de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Introduction à NodeJS

Page 66: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

66

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Histoire de NodeJS

• Description de NodeJS

• Avantages

Page 67: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

67

Formation NodeJS, les fondamentaux alphorm.com™©

Histoire de NodeJS• 2009 : créé par Ryan Dahl

� NodeJS utilise la V8 engine pour executer le code js

• 2011 : NPM est créé pour publier et partager les librairies de la communauté. Windows travaille avec NodeJS pour le rendre compatible

• 2012 : Isaac Schlueter passe en leader du projet

• 2014, Janvier : Timothy J. Fontaine devient nouveau leader

� Décembre : Fedor Industry fork NodeJS, création de Io.js

• 2015, merge de NodeJs et Io.js

Page 68: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

68

Formation NodeJS, les fondamentaux alphorm.com™©

Descriptions• Open-source

• Développé en C/C++

• Cross platform : OS X, Microsoft Windows, Linux, FreeBSD, NonStop, IBM AIX, IBM System z and IBM i.

• Pour développer en « server-side »

• Se base de l’interpréteur JS : V8 de Google

• Utilisé par de grand nom: IBM, Microsoft, Yahoo!, Walmart, Groupon, SAP, LinkedIn, Rakuten, PayPal, Voxer, GoDaddy, …

Page 69: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

69

Formation NodeJS, les fondamentaux alphorm.com™©

Les avantages• NodeJS est basé sur une architecture :

� « event-driven »

� « non-blocking I/O API »

• NodeJS est conçu pour optimiser les possibilités et les évolutions d’une application web en temps réel.

• Les possibilités de NodeJS sont sans cesse augmentées grâce à sa grande communauté.

Page 70: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

70

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvertÀ retenir :

• NodeJs et Io.js merge durant l’été 2015

• NodeJs utilise le moteur de Google V8

• NodeJs est basé sur une architecture d’évènement et les IO ne sont pas bloquants

Prochaine vidéo :

• Le moteur V8

Page 71: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

71

Formation NodeJS, les fondamentaux alphorm.com™©

Le moteur V8

Introduction à NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 72: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

72

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Histoire et description de V8

• Comment V8 fonctionne ?

• Les optimisations

• Comment V8 compile le code JS ?

Page 73: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

73

Formation NodeJS, les fondamentaux alphorm.com™©

Histoire et description de V8• Créé par Google en 2008 avec le projet Chromium. Depuis est utilisé par

de nombreux projets comme MongoDb ou NodeJs

• Open-source et codé en C++

• V8 compile du Javascript en code machine avant de l’exécuter.

• Le code compilé est en plus optimisé et reoptimisé dynamiquement en“runtime”

• V8 gère ECMAScript 6

Page 74: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

74

Formation NodeJS, les fondamentaux alphorm.com™©

Comment V8 fonctionne?

Page 75: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

75

Formation NodeJS, les fondamentaux alphorm.com™©

Comment V8 fonctionne?

Page 76: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

76

Formation NodeJS, les fondamentaux alphorm.com™©

Les optimisations

Deux principales optimisations :

• Tagged Values : Pour éviter les effets d’expansion vers les doubles qui est chère en ressources.

• Les tableaux : Pour aider V8 à optimiser les tableaux, évitez les trous. Ajouter les nouveaux éléments à la suite. De plus la préallocation étant lourde, préférez augmenter/ajouter les éléments un à un plutôt que tout d’un coup.

Page 77: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

77

Formation NodeJS, les fondamentaux alphorm.com™©

Comment V8 compile le code JS ?

• V8 a deux compilateurs !

� Un compilateur complet « Full »

� Un compilateur d’optimisation

Page 78: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

78

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu comment optimiser notre code pour V8.

• Pour plus d’informations :

� Google I/O 2012 “Breaking the JavaScript Speed Limit with V8” avec Daniel Clifford : video et slides.

� V8: Un moteur JavaScript open-source: vidéo de Lars Bak, V8 core engineer.

� Un poste du blog de Nikkei Electronics Asia: Why Is the New Google V8 Engine So Fast?

• Prochain chapitre : L’architecture de NodeJS

Page 79: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

79

Formation NodeJS, les fondamentaux alphorm.com™©

Programmation par callback

Architecture de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 80: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

80

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Qu’est-ce que la programmation par callback ?

• Comment cela fonctionne ?

• « Error-first » callback

Page 81: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

81

Formation NodeJS, les fondamentaux alphorm.com™©

Qu’est-ce que la programmation par callback ?

• Les callbacks sont des fonctions qui sont appelées à la fin d’une tâche.

• Les callbacks peuvent aussi être désignées par abus de langage, une fonction anonyme passée en argument.

• Une très grande partie du code de NodeJS est développé avec des callbacks.

Page 82: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

82

Formation NodeJS, les fondamentaux alphorm.com™©

Comment cela fonctionne ?• Imaginons l’algorithme suivant :

� Je lance une recherche à partir d’une fonction avec les arguments :

• Les données et le filtre

• La callback

� Dans la fonction, quand j’ai fini de traiter les données, j’appelle la fonction callback avec les potentielles erreurs et le résultat.

Page 83: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

83

Formation NodeJS, les fondamentaux alphorm.com™©

« Error-first » callback• La communauté de NodeJS s’est mis d’accord pour une standardisation

des callbacks :

� Le premier argument est l’erreur.

� Le second est le résultat.

• C’est important de garder cette normalisation pour faciliter la réutilisation de votre code.

Page 84: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

84

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons compris comment fonctionnent les callback.

• La prochaine vidéo sera sur les méthodes synchrones et l’asynchrone.

Page 85: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

85

Formation NodeJS, les fondamentaux alphorm.com™©

Synchrone vs Asynchrone

Architecture de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 86: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

86

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Les méthodes synchrones

• Les méthodes asynchrones

• Synchrone VS Asynchrone

Page 87: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

87

Formation NodeJS, les fondamentaux alphorm.com™©

Les méthodes synchrones• Chaque tâche est traitée une après l’autre

• Tant que le fichier 1 n’est pas totalement téléchargé, le script bloque.

• L’exécution est complètement bloquée. La méthode de contournement est de développer un programme multithreadé.

Page 88: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

88

Formation NodeJS, les fondamentaux alphorm.com™©

Les méthodes asynchrones• Le programme lance plusieurs tâches en même temps, on est averti

quand les tâches sont finies.

• Malgré que le programme soit en train de télécharger les fichiers, le programme peut continuer à faire d’autres choses.

Page 89: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

89

Formation NodeJS, les fondamentaux alphorm.com™©

Synchrone vs Asynchrone

Page 90: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

90

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu qu’elles sont les différences entre un code Synchrone et

Asynchrone.

• Prochaine vidéo :

� Compréhension de l’« event loop »

Page 91: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

91

Formation NodeJS, les fondamentaux alphorm.com™©

L’Event Loop

Architecture de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 92: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

92

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Qu’est-ce que l’Event Loop ?

• Fonctions synchrones / asynchrones

Page 93: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

93

Formation NodeJS, les fondamentaux alphorm.com™©

• L’évent loop est le cœur de V8 :

� Timer : les fonctions de « timer » sont appelées (setInterval, setTimeout)

� Pending callbacks : V8 va exécuter les fonctions qui sont en attente.

� Poll : V8 vérifie s’il n’y a pas de nouvel évent sur les « files descriptors »

� setImmediate : la fonction setImmediate est appelée.

Qu’est ce que l’event loop ?

Page 94: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

94

Formation NodeJS, les fondamentaux alphorm.com™©

Fonctions synchrones / asynchrones• Nous allons voir ensemble ce qu’implique vraiment le synchrone et

l’asynchrone dans notre code.

Page 95: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

95

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu que malgré que des fonctions appellent des callback,

elles ne sont pas forcement asynchrones.

• Nous avons bien vu que tant que nous ne rendons pas la main, le pointeur d’exécution reste dans notre code.

• Prochain chapitre:

� Programmation par callback avancée

Page 96: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

96

Formation NodeJS, les fondamentaux alphorm.com™©

Programmation par callback avancée : Projet asyncMap

Architecture de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 97: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

97

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Révisions

• Projet 1 : asyncMap

• Let’s dev !

Page 98: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

98

Formation NodeJS, les fondamentaux alphorm.com™©

Révisions• Les callbacks, comment elles fonctionnent et la norme « Error-First ».

• Les différences entre le synchrone et l’asynchrone.

• L’event loop, comment nodejs fonctionne et ce qu’il faut prévoir

Page 99: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

99

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 1 : asyncMap• Sujet :

- Télécharger 3 images à la fois.

- Une fois que les 3 images sont téléchargées, afficher un message avec la taille totale des 3 images.

- Les téléchargements doivent être asynchrones.

- Sujet: ‘FR_235_04_03/Exercices/asyncMap.js’

Page 100: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

100

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 1 : asyncMap• Algorithme :

- On crée un Array qui contient nos 3 images.

- On appelle une fonction qui gèrera les 3 téléchargements.

- On lance les 3 téléchargements, dans leur callback, on compte le nombre de retours et on garde la taille de l’image téléchargée.

- Une fois qu’il y a eu 3 callbacks de retour, on appelle la callback pour indiquer que l’on a téléchargé nos 3 images, et on affiche le résultat.

- Correction : ‘FR_235_04_03/Exercices/asyncMap_corrigé.js’

Page 101: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

101

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 1 : asyncMap

A vous de coder !

Page 102: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

102

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 1 : asyncMap

Correction

Page 103: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

103

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons écrit notre premier vrai projet NodeJS.

• Dans le cas d’une boucle + fonction asynchrone, il ne faut pas oublier de réenglober la fonction afin de ne pas écraser les closures !

• Prochain Vidéo:

� Programmation par callback avancée : Projet asyncWaterfall

Page 104: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

104

Formation NodeJS, les fondamentaux alphorm.com™©

Programmation par callback avancée :

Projet asyncWaterfall

Architecture de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 105: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

105

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Projet 2 : asyncWaterfall

• Let’s dev !

Page 106: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

106

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 2 : asyncWaterfall• Sujet :

- Exécuter une suite de fonctions consécutivement et appeler la callback une fois que la dernière est appelée.

- Le projet DOIT gérer les fonctions asynchrones.

- Sujet: ‘FR_235_04_03/Exercices/asyncWaterfall.js’

- Correction : ‘FR_235_04_03/Exercices/asyncWaterfall_corrigé.js’

Page 107: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

107

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 2 : asyncWaterfall• Algorithme :

- On crée un array contenant 2 fonctions

- Fonction1 : télécharge une image avec http.get

- Fonction2 : donne la taille en octet de l’image

- En récursif asyncParallel :

- Je prends la première fonction et je la retire de l’Array

- Je l’exécute en créant une callback

- Dans la callback, s’il reste des jobs à faire, je rappelle asyncParallel

- Une fois tous les jobs exécutés, on appelle la première callback avec le dernier résultat

Page 108: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

108

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 2 : asyncMap

A vous de coder !

Page 109: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

109

Formation NodeJS, les fondamentaux alphorm.com™©

Projet 2 : asyncMap

Correction

Page 110: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

110

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu comment gérer plusieurs fonctions asynchrones du

même type.

• Nous avons fait un rapide rappel sur

� Le keyword ‘arguments’.

� Sur la fonction Apply.

• Prochain chapitre:

� Les modules natifs !

Page 111: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

111

Formation NodeJS, les fondamentaux alphorm.com™©

L’approche modulaire

Modules et gestion de dépendances

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 112: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

112

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• NodeJS et ses modules

• Les modules natifs

• Créer ses propres modules

Page 113: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

113

Formation NodeJS, les fondamentaux alphorm.com™©

NodeJs et ses modules• Le cœur de NodeJS est petit, mais les modules qui le composent sont

extrêmement nombreux.

• Un module encapsule le code d’un morceau fonctionnel du projet.

• Un module peut exporter un module.

• Le code NodeJS a besoin de la fonction « require » pour importer un nouveau module au code.

• On exporte un module en copiant l’objet dans « module.exports » ou dans « exports » directement.

Page 114: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

114

Formation NodeJS, les fondamentaux alphorm.com™©

NodeJs et ses modules• Il y a deux types de modules :

� Module natif, présent par défaut dans NodeJS.

� Module communautaire, qu’il faut récupérer avec NPM.

• Un module peut exporter :

� Une string

� Un nombre

� Un objet

� Une fonction

� Une « classe »

� Un objet instancié

Page 115: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

115

Formation NodeJS, les fondamentaux alphorm.com™©

Les modules natifs• NodeJs met à disposition des modules natifs.

• Leur liste et leurs API sont disponibles sur https://nodejs.org/api/

Page 116: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

116

Formation NodeJS, les fondamentaux alphorm.com™©

Créer ses propres modules• Étude de cas

1. Le plus simple des modules

2. Un module doit avoir un but précis

3. Exporter une string, un nombre et un objet

4. Exporter une fonction anonyme

5. Exporter une fonction nommée

6. Exporter une classe

7. Exporter un objet

• Bonus

Page 117: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

117

Formation NodeJS, les fondamentaux alphorm.com™©

Modulariser le projet : « Blackhole »• Reprenons le code du projet « asyncMap » et divisons le code comme

ci-dessous :

� Module « async.js »

� Module « request.js »

• Copions la liste des images dans un fichier de configuration “config.json”.

Page 118: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

118

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu comment créer nos modules, comment les exporter et

les require.

• Les projets NodeJS sont créés autour de ce « Module Pathern ».

• Prochain chapitre:

� NPM: Le manager des modules

Page 119: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

119

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

NPM : Le manager des modules

Modules et gestion de dépendances

Page 120: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

120

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Qu’est-ce que NPM ?

• Se familiariser avec NPM

• Module local

• Module global

• Usage

Page 121: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

121

Formation NodeJS, les fondamentaux alphorm.com™©

Qu’est-ce que NPM ?• NPM est un gestionnaire de module pour NodeJs.

• NPM gère les dépendances des modules automatiquement.

• NPM est inspiré de PEAR (PHP) et CPAN (PERL)

• NPM fonctionne en ligne de commande.

• NPM permet de rechercher, installer et gérer.

• NPM est installé avec NodeJS.

Page 122: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

122

Formation NodeJS, les fondamentaux alphorm.com™©

Se familiariser avec NPM• Ajouter l’autocomplétion (linux)

� $> npm completion >> ~/.bashrc

� $> source ~/.bashrc

• npm help

• npm help <subcommand>

Page 123: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

123

Formation NodeJS, les fondamentaux alphorm.com™©

Module local• Les modules locaux sont des modules téléchargés et installés au niveau

de votre projet :

� npm install underscore

� Installé dans ./node_modules/

� Il suffit de require(‘module-name’)

• Exemple :

� npm install underscore

� var underscore = require(‘underscore’);

Page 124: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

124

Formation NodeJS, les fondamentaux alphorm.com™©

Module global• Les modules globaux sont installés dans

� /home/<user>/.nvm/versions/node/v4.2.1/bin/<project>

• Les modules ne peuvent pas être accédés avec require()

• Mais ils sont accessibles depuis un terminal.

• Example :

� $> npm install –g greedy-snake

� $> greedy-snake

Page 125: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

125

Formation NodeJS, les fondamentaux alphorm.com™©

Usage� Lister les modules

• $> npm ls

• $> npm ls –g

� Savoir où se trouve le répertoire node_module

• $> npm root

� Rechercher un module

• $> npm search <Module name>

� Désinstaller

• $> npm uninstall <Module name>

• $> npm uninstall –g <Module name>

Page 126: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

126

Formation NodeJS, les fondamentaux alphorm.com™©

Usage• Pour « linker » un module global à un projet local

� $> npm link <Module name>

• Pour lister les paquets qui ne sont pas à jour

� $> npm outdated

• Pour mettre à jour les modules

� $> npm update

• Pour changer la configuration de NPM

� $> npm config

Page 127: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

127

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons découvert comment utiliser le gestionnaire de module de

NodeJS : NPM

• Sans NPM, NodeJS ne serait pas autant populaire.

• La prochaine vidéo :

� Package.js

� Publier un module sur NPM

Page 128: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

128

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Le fichier package.json

Modules et gestion de dépendances

Page 129: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

129

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• A quoi sert le fichier package.json ?

• Les différents champs

• Enregistrer les dépendances

• Les versions des modules

Page 130: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

130

Formation NodeJS, les fondamentaux alphorm.com™©

A quoi sert le fichier package.json ?• Le fichier « package.json » résume toutes les informations pratiques de

votre projet

• Pour générer le fichier :

� $> npm init

Page 131: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

131

Formation NodeJS, les fondamentaux alphorm.com™©

Les différents champs• Name :

� Nom du projet

� Limité à 214 caractères

� Ne peut commencer par un point ou un underscore.

� Ne peut avoir de majuscule dans le nom

� Ne pas ajouter « node » ou « js » dans le nom

� Vu que le nom sera ajouté dans require(), autant que le nom soit court

� Vérifier que le nom n’est pas déjà pris

Page 132: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

132

Formation NodeJS, les fondamentaux alphorm.com™©

Les différents champs• Version : La version du projet. Obligatoire

• Description : Quelques mots pour décrire le projet. Ces mots seront ajoutés à la fiche de description de votre projet dans npm.

• Keyword : Sera utilisé par npm search pour retrouver votre module.

• Homepage : Pointe vers le site internet du projet.

• Bugs : Renseigner le bug tracker et / ou un email de contact.

• Licence : La licence du projet, ISC par défaut (https://spdx.org/licenses/)

Page 133: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

133

Formation NodeJS, les fondamentaux alphorm.com™©

Les différents champs• Author : Les informations vous concernant

• Repository : Les informations pour accéder à votre projet

• Et plus encore !

� https://docs.npmjs.com/files/package.json

Page 134: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

134

Formation NodeJS, les fondamentaux alphorm.com™©

Enregistrer ses dépendances• Imaginons que notre projet a besoin de plusieurs modules :

� Async

� Underscore

� Moment

� Mkdirp

• Solution rapide et pratique :

� $> npm install --save async

Page 135: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

135

Formation NodeJS, les fondamentaux alphorm.com™©

Les versions des modules• La version du projet ou des dépendances externes sont renseignées

avec 3 chiffres :

Page 136: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

136

Formation NodeJS, les fondamentaux alphorm.com™©

Les versions des modules• Pour les modules externes, on peut ajouter des flags pour préciser la

version que l’on veut :

� <=1.2.3

� =2.0.1

� ~1.2.3 va prendre toutes les versions jusqu’à 1.3.0 non compris

� ^1.2.3 va prendre toutes les versions jusqu’à 2.0.0 non compris

Page 137: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

137

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Désormais nous maitrisons NPM et son fichier de « configuration »

• Nous avons vu les champs les plus importants

• Nous avons vu comment ajouter un module et le sauvegarder dans package.json

• Et nous avons compris comment renseigner les versions des modules externes

• La prochaine vidéo

� Publier son propre module NPM

Page 138: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

138

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Publier un module sur NPM

Modules et gestion de dépendances

Page 139: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

139

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Pourquoi publier un projet sur NPM ?

• Créer un utilisateur NPM

• Ajouter le projet sur github

• Créer le module myasync

• Site project : Blackhole

Page 140: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

140

Formation NodeJS, les fondamentaux alphorm.com™©

Pourquoi publier un projet sur NPM ?• Le rendre public votre module.

• Se faire aider pour l’améliorer ou pour le débugger.

• Avoir de la visibilité sur internet ou pour faire valoir ses connaissances.

• Devenir célèbre et accéder à la gloire éternelle … !

Page 141: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

141

Formation NodeJS, les fondamentaux alphorm.com™©

Créer un utilisateur NPM• Première étape, créer un utilisateur NPM

� $> npm adduser

Page 142: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

142

Formation NodeJS, les fondamentaux alphorm.com™©

Ajouter le projet sur github• Sauvegarder le projet

• Avoir accés à un wiki pour son projet

• Avoir accés à un bug tracker

Page 143: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

143

Formation NodeJS, les fondamentaux alphorm.com™©

Créer le module myasync• Créer le projet

� Créer un dossier « myasync-ferrari » avec votre nom.

� Copier le fichier async.js

� Initialiser git

• $> git init

• $> git remote add origin <lien vers le repository>

Page 144: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

144

Formation NodeJS, les fondamentaux alphorm.com™©

Créer le module myasync• Initialiser NPM

� $> npm init

• Name : le nom de votre projet en minuscule (« myasync-eferrari »)

• Version : 1.0.0

• Description : Fonctions et modèles communs pour le code asynchrone

• Entry point : async.js

• Test command : mocha

• Git repository : Normalement déjà renseigner, sinon prendre l’url de votre repository.

• En créant le projet dans cet ordre, les champs homepage et bugs doivent être remplis.

Page 145: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

145

Formation NodeJS, les fondamentaux alphorm.com™©

Publier le module• Une seule commande :

� $> npm publish

• C’est tout ! Félicitation !

Page 146: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

146

Formation NodeJS, les fondamentaux alphorm.com™©

Site project : Blackhole• Préparons notre projet, je vous propose de :

� Créer un projet github pour sauvegarder et versionner le code

� Initialisé git

� Initialisé NPM

� Ajouter notre module NPM « myasync-xxxx »

� Adapter le code avec cette nouvelle disposition

Page 147: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

147

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu ensemble comment créer un module et nous l’avons

publié sur NPM

• Nous avons préparé notre projet Blackhole tel un vrai projet NodeJs !

• Prochaine vidéo :

� Les modules natifs : process, os, path et util

Page 148: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

148

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Modules : Process, Os, Path, Util

Modules et gestion de dépendances

Page 149: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

149

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Module : Process

• Module : OS

• Module : Path

• Module : Util

Page 150: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

150

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Process• Le module process est un objet global qui peut être accédé de

n’importe où.

• C’est une instance d’EventEmitter.

• Il permet de gérer :

� les états

� les arguments

� les signaux

� et les informations du processus.

• Lien API : https://nodejs.org/api/process.html

Page 151: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

151

Formation NodeJS, les fondamentaux alphorm.com™©

Module : OS• Le module OS est accessible à partir de require(“os”)

• Il permet de gérer quelques informations basiques sur l’os.

• Lien API : https://nodejs.org/api/os.html

Page 152: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

152

Formation NodeJS, les fondamentaux alphorm.com™©

Module : OS

• Ecrire un script pour récupérer les informations suivantes :

� L’architecture de la machine

� Le nombre de CPU

� Le hostname

� Et la charge moyenne

• Correction : ‘FR_235_05_04/Exercices/exercice_os_corrigé.js’

Exercices

Page 153: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

153

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Path• L’objet Path est accessible à partir de require(“path”)

• Il permet de manipuler les liens systèmes

• Lien API : https://nodejs.org/api/path.html

Page 154: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

154

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Util• L’objet Util est accessible à partir de require(“util”)

• Il permet de gérer beaucoup de différentes choses:

� Construction de chaîne de caractères

� Héritage

� Inspection des objets

� Et d’autres

• Lien API : https://nodejs.org/api/util.html

Page 155: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

155

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Util• Beaucoup de fonctions sont “deprecated” (obsoletes)

• En Février 2015, ils se sont rendu compte qu’un certain nombre de fonctions d’util ne retournaient pas de bonnes valeurs.

� Util.isObject d’une fonction retourne ‘false’, alors qu’elle devrait retourner‘true’

• Lors de la réunion TSC “Technical Steering Committee” de Juin, vu qu’iln’était pas possible de modifier util sans créer d’important bugs dansles développements au sein de la communauté NodeJS. Ils ont décidéqu’ils supprimeraient les fonctions de test.

• En remplacement, il faut utiliser des modules de la communauté

� Exemple : core-util-is

Page 156: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

156

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu ensemble les 4 premiers modules natifs de NodeJS

• Vous savez désormais :

� Comment gérer les arguments

� Connaître le type de machine sur lequel votre script tourne

� Gérer les Chemins

� Et vous servir d’Util

• La prochaine vidéo sera sur :

� Les modules : Buffer / FS / ReadLine / Stream

Page 157: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

157

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Modules : Buffer / FS / ReadLine / Stream

Modules et gestion de dépendances

Page 158: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

158

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Module : Buffer

• Module : File System

• Module : ReadLine

• Module : Stream

Page 159: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

159

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Buffer• Le module Buffer est un objet global qui peut être accédé de n’importe

• JavaScript gère très bien les strings, mais rien de spécial pour les données binaires. Par exemple : Les données provenant d’un service TCP.

• Les données brutes sont stockées dans des objets appelés “Buffer”

• Buffer ressemble à un Array (tableau) contenant des nombres.

• Un buffer a une taille fixe. Si la taille est modifiée, l’ensemble des données est recopié.

• Lien API : https://nodejs.org/api/buffer.html

Page 160: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

160

Formation NodeJS, les fondamentaux alphorm.com™©

Module : File System• Tous les accès (I/O) sur les fichiers sont accessibles grâce au module

“FS”.

• Pour accéder au module, il faut faire un require(‘fs’).

• La plupart des fonctions existent en Synchrone et en Asynchrone.

• Lien API : https://nodejs.org/api/fs.html

Page 161: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

161

Formation NodeJS, les fondamentaux alphorm.com™©

Module : File System

• À partir du fichier présent dans les ressources “lorem ipsum.txt”

• Lire le fichier en synchrome

• Lire le fichier en asynchrone

• Copier le fichier dans “lorem ipsum – copy.txt” en asynchrone

• Implémenter la fonction watch pour surveiller le dossier courant

� fs.watch(“.”, …)

• Correction : ‘FR_235_05_05/Exercices/exercice_fs_corrigé.js’

Exercices

Page 162: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

162

Formation NodeJS, les fondamentaux alphorm.com™©

Module : ReadLine• Le module ReadLine permet d’interagir avec les “file descriptor”.

• https://nodejs.org/api/readline.html

Page 163: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

163

Formation NodeJS, les fondamentaux alphorm.com™©

Module : ReadLine

• Ouvrir le fichier ‘FR_235_05_05/Exercices/exercice_readline.js’

• Enregistrer tout ce qui est écrit dans le terminal dans un fichier“transcript.txt”

• Correction : ‘FR_235_05_05/Exercices/exercice_readline_corrigé.js’

Exercices

Page 164: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

164

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Stream• Stream est une implémentation de divers objets dans NodeJs.

• Les streams peuvent être ‘readable’ et ‘writable’, ou les deux.

• Tous les streams sont des instances d’EventEmitter.

• Lien API : https://nodejs.org/api/stream.html

Page 165: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

165

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Stream

• Ouvrir le fichier ‘FR_235_05_05/Exercices/exercice_stream.js’

• Coder la fonction ‘requestAndSave’ qui téléchargera le contenu d’uneURL est le stocker dans un fichier.

• Essayer de l’exercice faire avec les streams.

• Correction : ‘FR_235_05_05/Exercices/exercice_stream_corrigé.js’

Exercices

Page 166: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

166

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons appris comment maîtriser complètement les fichiers et les

stream sur NodeJS.

• Énormément de programmes vont utiliser ces modules natifs, c’estimportant de bien les maîtriser.

• Prochaine vidéo:

� Module : Console / Error / Timer

Page 167: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

167

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Modules : Console / Errors / Timers

Modules et gestion de dépendances

Page 168: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

168

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Module : Console

• Module : Errors

• Module : Timers

• Site project : Blackhole

Page 169: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

169

Formation NodeJS, les fondamentaux alphorm.com™©

Module: Console• Console est un module qui permet d’interagir avec stdout ou stderr.

• Le module est en global.

• API https://nodejs.org/api/console.html

Page 170: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

170

Formation NodeJS, les fondamentaux alphorm.com™©

Module: Errors• Il existe deux types d’erreurs en NodeJS :

� Les erreurs JavaScript

� Les erreurs NodeJS

• API https://nodejs.org/api/errors.html

Page 171: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

171

Formation NodeJS, les fondamentaux alphorm.com™©

Module: Timers• Timers est un module qui permet d’interagir avec l’Event loop.

• Il nous permet d’ajouter des fonctions à un temps donné.

• 3 types fonctions :

� setImmediate

� setTimeout

� setInterval

• API https://nodejs.org/api/timers.html

Page 172: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

172

Formation NodeJS, les fondamentaux alphorm.com™©

Module : Timers

• Créer une boucle avec setInterval et nettoyer la bouche au bout de 10 interactions.

• Correction : ‘FR_235_05_06/Exercices/exercice_timers_corrigé.js’

Exercices

Page 173: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

173

Formation NodeJS, les fondamentaux alphorm.com™©

Side project : Blackhole

• Reprendre le projet ‘Blackhole’

� Ajouter aux options à notre fichier de configuration

• log_file: “<nom du fichier>”

• error_file: “<nom du fichier>”

� Gérer les logs à partir du module Console

• Si les options sont presents dans la config, écrire les logs dans les fichiers

• Sinon, afficher les logs sur la console

Page 174: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

174

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Dans cette vidéo, nous avons vu :

� Comment écrire des logs

� Qu’elles sont les erreurs que l’on peut rencontrer

� Comment gérer les timers

• Prochaine vidéo

� Module : Events / EventEmitter2 / EventEmitter 3

Page 175: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

175

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Modules : Events / EventEmitter2 / EventEmitter3

Modules et gestion de dépendances

Page 176: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

176

Formation NodeJS, les fondamentaux alphorm.com™©

Plan• Module: Events

• Module externe : EventEmitter2

• Module externe : EventEmitter3

• Side project : Blackhole

Page 177: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

177

Formation NodeJS, les fondamentaux alphorm.com™©

Module: Events• Une méthode de développement de NodeJS est par l’émission

d’évènements.

• On inscrit une fonction à un événement.

• A chaque fois qu’on appelle cet évènement, la fonction est appelée.

• API https://nodejs.org/api/events.html

Page 178: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

178

Formation NodeJS, les fondamentaux alphorm.com™©

Module externe: EventEmitter2• EventEmitter2 est un module externe, développer par la communauté.

• Le code a été amélioré et de nouvelles fonctionnalités ont été ajoutées

� Wildcard

� GetAll

• API https://github.com/asyncly/EventEmitter2

Page 179: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

179

Formation NodeJS, les fondamentaux alphorm.com™©

Module externe: EventEmitter3• EventEmitter3 est un module externe, développer par la communauté.

• Le code a été encore amélioré et extrêmement allégé.

• API https://github.com/primus/eventemitter3

Page 180: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

180

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a découvert• Nous avons vu une méthode de développement très utilisé sur NodeJS.

• Prochaine vidéo:

� Les modules réseaux

Page 181: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

181

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Modules : Url / http / Https / Net / UDP

Modules et gestion de dépendances

Page 182: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

182

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Module : URL

• Module : Http

• Module : Https

• Module : Net

• Module : UDP

• Site project : Blackhole

Page 183: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

183

Formation NodeJS, les fondamentaux alphorm.com™©

Module: URL• URL est un module qui permet de parser et de formater une URL.

• API https://nodejs.org/api/url.html

Page 184: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

184

Formation NodeJS, les fondamentaux alphorm.com™©

Module: HTTP• Le module HTTP permet de :

� Créer un client pour interagir avec un serveur HTTP.

� Créer soit même un serveur HTTP.

� Manipuler les headers et user-agents

• Ce module est une surcouche au module NET.

• API https://nodejs.org/api/http.html

Page 185: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

185

Formation NodeJS, les fondamentaux alphorm.com™©

Module: HTTP

• Créer un objet qui permet de récupérer un contenu à partir d’une URL en HTTP ou HTTPS.

• Correction : ‘FR_235_05_08/Exercices/exercice_request_corrigé.js’

Exercices

Page 186: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

186

Formation NodeJS, les fondamentaux alphorm.com™©

Module: HTTPS• Le module HTTPS gère la couche TLS/SSL du protocole HTTP.

• L’API est exactement la même que HTTP.

• API https://nodejs.org/api/https.html

Page 187: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

187

Formation NodeJS, les fondamentaux alphorm.com™©

Module : NET• Le module NET permet d’interagir avec le protocole TCP/IP en

asynchrone.

• Le module permet de :

� Créer un client.

� Créer un serveur.

• API https://nodejs.org/api/net.html

Page 188: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

188

Formation NodeJS, les fondamentaux alphorm.com™©

Module : UDP• Le module UDP permet d’interagir avec le protocole UDP/IP et multicast

en asynchrone.

• Le module permet de :

� Créer un client.

� Créer un serveur.

• API https://nodejs.org/api/dgram.html

Page 189: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

189

Formation NodeJS, les fondamentaux alphorm.com™©

Side project : Blackhole

• Reprendre le projet ‘Blackhole’

� Intéger l’abstraction du protocole HTTP / HTTPS

Page 190: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

190

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Dans cette vidéo, nous avons vu les différents modules réseaux que

NodeJS nous propose.

• Prochaine vidéo

� Module : Child Process / Cluster

Page 191: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

191

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Modules : ChildProcess / Cluster

Modules et gestion de dépendances

Page 192: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

192

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Module : ChildProcesses

• Module : Cluster

Page 193: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

193

Formation NodeJS, les fondamentaux alphorm.com™©

Module: ChildProcess• Le module ChildProcess permet de gérer :

� Le lancement de nouveaux processus.

� La communication interprocessus :

• Au ‘pipe’ (Stdin, Stdout, Stderr).

• Par message.

� Les signaux.

• L’objet ChildProcess hérite d’un EventEmitter.

Page 194: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

194

Formation NodeJS, les fondamentaux alphorm.com™©

Module: ChildProcess• 3 fonctions principales :

� Spawn : Détache le processus.

� Exec : Ne détache pas le processus, attend un retour. Buffer de 200k max.

� Fork : Détache et embarque v8 dans le processus.

• API https://nodejs.org/api/child_process.html

Page 195: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

195

Formation NodeJS, les fondamentaux alphorm.com™©

Module: Cluster• Le module Cluster est un nouveau module qui va spawn

automatiquement les processus fils et va faire du load balancing sur les ports TCP.

• Il offre une surcouche de gestion de processus fils :

� Spawn

� Kill

� Algorithme de load balancing

• API https://nodejs.org/api/cluster.html

Page 196: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

196

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons vu comme exploiter tous les core de notre machine

physique.

• Je vous recommande les modules communautaires ‘Pm2’ ou ‘forever’

• Prochaines vidéos, Blackhole !!

Page 197: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

197

Formation NodeJS, les fondamentaux alphorm.com™©

Blackhole : Le module requestManager

Architecture de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 198: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

198

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Projet: requestManager

• Let’s dev !

• Intégration dans Blackhole

Page 199: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

199

Formation NodeJS, les fondamentaux alphorm.com™©

Projet: requestManager• Sujet :

- Créer un module nodeJS qui permet de récupérer des données en HTTP(s)

- Ce module sera capable de limiter le nombre de requêtes simultanées.

- requestManager sera un singleton.

- RequestManager a deux méthodes :

- setRequestMax(int) : Servant à limiter le nombre de requêtes

- add(url, callback): Servant à ajouter une URL dans le request manager. Quand le contenu est téléchargé, callback sera appelé, avec en premier argument les erreurs et en second le contenu.

- Sujet: ‘FR_235_05_10/Exercices/requestManager.js’

- Correction : ‘FR_235_05_10/Exercices/requestManager_corrigé.js’

Page 200: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

200

Formation NodeJS, les fondamentaux alphorm.com™©

Let’s dev !

À vous de coder !

Page 201: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

201

Formation NodeJS, les fondamentaux alphorm.com™©

Let’s dev !

Correction

Page 202: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

202

Formation NodeJS, les fondamentaux alphorm.com™©

Blackhole• Intégrons le module requestManager dans blackhole.

Page 203: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

203

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• Nous avons revu plusieurs modules natifs :

� Boucle JS

� Eventemitter

� Http

• Prochaine vidéo:

� Blackhole: le module Page

Page 204: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

204

Formation NodeJS, les fondamentaux alphorm.com™©

Blackhole : Le module Page

Architecture de NodeJS

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Page 205: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

205

Formation NodeJS, les fondamentaux alphorm.com™©

Plan

• Module: Page

• Let’s dev !

Page 206: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

206

Formation NodeJS, les fondamentaux alphorm.com™©

Module: Page• Sujet :

- Ce module gère l’algorithme global du projet en appelant de nouvelles pages.

- Le module Page représente une entité physique d’une page web.

- Le module, une fois configuré avec la bonne URL, sera capable :

1. De télécharger le contenu de l’URL.

2. De parser le contenu téléchargé et de trouver de nouvelles URL.

3. De créer autant de nouvelle Page que d’URL trouvées.

4. De sauvegarder son contenu sur le disque.

- Sujet: ‘Blackhole/libs/Page.js’

- Correction : ‘Blackhole’

Page 207: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

207

Formation NodeJS, les fondamentaux alphorm.com™©

Let’s dev !

À vous de coder !

Page 208: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

208

Formation NodeJS, les fondamentaux alphorm.com™©

Let’s dev !

Correction

Page 209: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

209

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert• À la fin de ce code, le projet blackhole devrait être fini !

•Félicitation !

• Prochaine vidéo:

� La conclusion

Page 210: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

210

Formation NodeJS, les fondamentaux alphorm.com™©

Site : http://www.alphorm.comBlog : http://blog.alphorm.com

Édouard FERRARIFormateur et Consultant indépendantContact : [email protected]

Conclusion

Page 211: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

211

Formation NodeJS, les fondamentaux alphorm.com™©

Ce qu’on a couvert

1. Installation de NodeJs

2. Choix et utilisation d’un IDE

3. Un court rappel de la visibilité des variables en Javascript

4. L’ « héritage »

5. This / Context, Bind, Call, Apply

6. Connaissance et optimisation du moteur v8

7. Programmation par callback

8. Le synchrone et l’asynchrone

9. Mise en place un vrai projet Nodejs avec « package.json », GIT

10. Publication d’un module sur NPM

11. Et les modules suivant :1. Process2. Os3. Path4. Util5. Buffer6. FS7. ReadLine8. Stream9. Console10. Error11. Timer12. Events / EventEmitter2 / EventEmitter313. Url14. HTTP(s)15. Net16. UDP17. ChildProcess18. Cluster

12. Un gros projet le « blackhole »

Page 212: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

212

Formation NodeJS, les fondamentaux alphorm.com™©

Avez vous des Question / Remarques / Commentaires ?

Page 213: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

213

Formation NodeJS, les fondamentaux alphorm.com™©

Prochaine formation

•Formation « NodeJS, avancé » :� Node et le Web : HTTP, Request & Express

� L’asynchrone en détails

� Communication temps réel

� Liaison avec la persistance des données

� Projet : ChatWithMe

� Bonus : Pm2, Commander, Mocha, Forever, Native, Avanced debug

Page 214: Alphorm.com Formation NodeJS, les fondamentaux

15/01/2016

214

Formation NodeJS, les fondamentaux alphorm.com™©

A bientôt ☺

Keep in touch !

E-mail : [email protected]

Linkedin : https://fr.linkedin.com/in/edouardferrari

Twitter : https://twitter.com/edouard_ferrari

Alphorm : http://www.alphorm.com/formateur/edouard-ferrari