SlideShare uma empresa Scribd logo
1 de 221
Baixar para ler offline
10/03/2016
1
Formation NodeJS, avancé alphorm.com™©
Formation
Avancée de NodeJS
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
2
Formation NodeJS, avancé alphorm.com™©
Plan
• Présentation du formateur
• Plan de formation
• Objectifs de la formation
• Public concerné
• Les possibilités de NodeJS
• Les connaissances requises
10/03/2016
12
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Scénario
de la formation
10/03/2016
13
Formation NodeJS, avancé alphorm.com™©
Plan
• Formation
• Side project : ChatWithMe
10/03/2016
14
Formation NodeJS, avancé alphorm.com™©
Formation
• Cette formation est une seconde partie de la formation complète de
NodeJs, les fondamentaux.
• Dans cette seconde partie, nous verrons ensemble :
Comment utiliser un des frameworks les plus utilisés de NodeJS : Express
Deux méthodes de code asynchrone.
Comment communiquer du code JavaScript côté client (navigateur web)
Comment sauvegarder nos données dans des bases de données ou dans des
fichiers
• En plus, dans cette formation, nous développerons une plateforme web
sur le modèle MVC et avec une abstraction de base de donnée.
10/03/2016
15
Formation NodeJS, avancé alphorm.com™©
Side Project : ChatWithMe
• À partir d’un squelette, nous allons développer une base solide d’un
chat.
• Nous développerons par étape
1. Le serveur web.
2. La communication en temps réel avec le navigateur.
3. La sauvegarde des données.
4. Le monitoring de l’application
• Libre à vous d’améliorer ce projet après cette formation.
10/03/2016
16
Formation NodeJS, avancé 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 espace
utilisateur sur Alphorm.com
• Prochain chapitre:
Node et le Web : HTTP, Request & Express
10/03/2016
17
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Périmètre
du module HTTP
Node et le Web
10/03/2016
18
Formation NodeJS, avancé alphorm.com™©
Plan
• Rappel
• Une requête HTTP (partie client)
• Un serveur HTTP (partie serveur)
10/03/2016
19
Formation NodeJS, avancé alphorm.com™©
Rappel
• 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
10/03/2016
20
Formation NodeJS, avancé alphorm.com™©
Une requête HTTP (partie client)
• Créons notre premier script pour envoyer une requête avec ‘http’
• Dans ‘FR_260_02_00/Exercices/’
Faire un script qui se connectera à l’URL https://httpbin.org/get en GET
Faire un script qui se connectera à l’URL https://httpbin.org/post en POST
avec en ‘formData’ :
• User : ‘bob’
• Message : “Bonjour !”
• Correction :
• ‘FR_260_02_00/Exercices/exercice_request_get_corrigé.js’
• ‘FR_260_02_00/Exercices/exercice_request_post_corrigé.js’
10/03/2016
21
Formation NodeJS, avancé alphorm.com™©
Un serveur HTTP (partie serveur)
• Dans ‘FR_260_02_00/Exercices/’
• Développer un serveur HTTP et gérer différemment les requêtes GET et
POST
• Bonus : Gérer deux routes différentes :
http://localhost:12000/users
http://localhost:12000/media
• Correction : ‘FR_260_02_00/Exercices/exercice_server_http_corrigé.js’
10/03/2016
22
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Un rapide rappel de NodeJS
Comment lancer une requête HTTP avec le module natif.
La difficulté de créer un serveur HTTP avec le module natif.
• Dans la prochaine vidéo, nous verrons le module Request, qui est une
abstraction des modules natifs HTTP/HTTPS, et qui prend en charge
énormément de fonctionnalités.
10/03/2016
23
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Request
Node et le Web
10/03/2016
24
Formation NodeJS, avancé alphorm.com™©
Plan
• Le module Request
• Les requêtes HTTP(s)
10/03/2016
25
Formation NodeJS, avancé alphorm.com™©
Le module Request
• Le module Request est une abstraction de différents modules natifs de
NodeJs.
• Il est designé pour être le plus simple possible d’utilisation.
• Supporte :
HTTP / HTTPS
Suit les redirections 2xx
Gère les requêtes en event ou stream/pipe
…
• API https://github.com/request/request
10/03/2016
26
Formation NodeJS, avancé alphorm.com™©
Les requêtes HTTP(s)
• Créons notre premier script pour envoyer une requête avec ‘request’
• Dans ‘FR_260_02_01/Exercices/’
Faire un script qui se connectera à l’URL https://httpbin.org/get en GET
Faire un script qui se connectera à l’URL https://httpbin.org/post en POST
avec en ‘formData’ :
• User : ‘bob’
• Message : “Bonjour !”
• Correction :
• ‘FR_260_02_01/Exercices/exercice_request_get_corrigé.js’
• ‘FR_260_02_01/Exercices/exercice_request_post_corrigé.js’
10/03/2016
27
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment lancer des requêtes HTTP(s) avec request
• Prochaine vidéo :
Serveur Web avec Express
10/03/2016
28
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Serveur Web
avec Express
Node et le Web
10/03/2016
29
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est-ce qu’Express ?
• Installation
• Hello word
• le ‘Generator’
10/03/2016
30
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce qu’Express ?
• Express est une infrastructure web minimaliste, souple et rapide pour
Node.JS
• Express fournit un ensemble de fonctionnalités robustes pour les
applications web et mobiles.
• Grâce à une foule de méthodes utilitaires HTTP et de middleware mise à
votre disposition, la création d'une API robuste est simple et rapide.
• Express apporte une couche fine de fonctionnalités d'application Web
fondamentales, sans masquer les fonctionnalités de Node.js que vous
connaissez et appréciez.
10/03/2016
31
Formation NodeJS, avancé alphorm.com™©
Installation
• Allez dans ‘FR_260_02_02/Cours/hello_word’
• Créer un projet NodeJS : npm init
• Puis installer express : npm install --save express
10/03/2016
32
Formation NodeJS, avancé alphorm.com™©
Hello word
Let’s code
Cours : ‘FR_260_02_02/Cours/hello_word/index.js’
10/03/2016
33
Formation NodeJS, avancé alphorm.com™©
Le ‘Generator’
• Le generator est un outil pour créer un squelette rapidement.
• Dans ‘FR_260_02_02/Cours/’
• Installer le generator : $> npm install express-generator –g
• Générer un projet : $> express myapp
• Aller dans le projet : $> cd myapp
• Installer les modules nécessaires : $> npm install
• Lancer le projet : $> DEBUG=myapp:* npm start
10/03/2016
34
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment créer un projet Express
Comment créer un serveur HTTP très light
Comment générer un squelette pour express
• Prochaine vidéo :
Express : Router les requêtes
10/03/2016
35
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Express :
Router les requêtes
Node et le Web
10/03/2016
36
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est-ce qu’une route ?
• Comment définir une route avec Express ?
10/03/2016
37
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce qu’une route ?
• Une route est un ‘path’ contenu dans une URL :
http://example.com/users
http://example.com/contats
http://example.com/user/eferrari
http://example.com/user/eferrari/contacts
10/03/2016
38
Formation NodeJS, avancé alphorm.com™©
Comment définir une route avec Express ?
app.METHOD(PATH, HANDLER)
• On peut définir une route telle quelle :
App est l’instance d’Express
METHOD est une méthode de requête HTTP
PATH est la route définie
HANDLER est la fonction qui sera appelée.
• Cours : ‘FR_260_02_03/Cours/routes/routes_basiques.js’
10/03/2016
39
Formation NodeJS, avancé alphorm.com™©
Comment définir une route avec Express ?
• Il est possible de mettre des regex dans le path.
• Cours : ‘FR_260_02_03/Cours/routes/routes_regex.js’
10/03/2016
40
Formation NodeJS, avancé alphorm.com™©
Comment définir une route avec Express ?
• Il est possible de chainer les routes.
• Cours : ‘FR_260_02_03/Cours/routes/routes_chainées.js’
10/03/2016
41
Formation NodeJS, avancé alphorm.com™©
Comment définir une route avec Express ?
• Il est possible de créer des modules pour mieux architecturer notre
projet avec la class express.Router.
• Cette classe est une instance complétée avec les middlewares et son
système de routing. Dans la doc, on peut le retrouver comme appellé
une “mini-app”.
• Cours : ‘FR_260_02_03/Cours/routes/routes_miniapp.js’
10/03/2016
42
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Ce qu’était une route.
Comment définir une route avec Express de plusieurs façons.
• Prochaine vidéo :
Express : Le gestionnaire de route
10/03/2016
43
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Express :
Le gestionnaire des routes
Node et le Web
10/03/2016
44
Formation NodeJS, avancé alphorm.com™©
Plan
• Le gestionnaire des routes
• Exemple
10/03/2016
45
Formation NodeJS, avancé alphorm.com™©
Le gestionnaire des routes
• Avec le gestionnaire, on peut fournir plusieurs callback.
• À la fin de chaque fonction, on appelle ‘next()’
• On peut utiliser ce mécanisme pour imposer une précondition sur une
route (Authentification, Autorisation …)
• Le gestionnaire peut être une fonction, un tableau de fonction, ou les
deux.
10/03/2016
46
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Cours : ‘FR_260_02_04/Cours/gestionnaire_de_route.js’
10/03/2016
47
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comme nous pouvions gérer les conditions à l’appel d’une route
• Prochaine vidéo :
Express : Les fichiers statiques
10/03/2016
48
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Express :
Les fichiers statiques
Node et le Web
10/03/2016
49
Formation NodeJS, avancé alphorm.com™©
Plan
• Comment les fichiers statiques sont gérés ?
• Exemple
10/03/2016
50
Formation NodeJS, avancé alphorm.com™©
Comment les fichiers statiques sont gérés ?
• Pour servir les fichiers statiques tels que les fichiers CSS ou JS, il faut
faire appel à ‘express.static’
• Il est possible de définir plusieurs répertoires statiques.
• De plus, nous pouvons définir un répertoire statique dans un chemin
virtuel.
app.use(express.static('public'));
app.use(express.static('public'));
app.use(express.static('files'));
app.use('/static', express.static('public'));
10/03/2016
51
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Cours : ‘FR_260_02_05/Cours/*’
10/03/2016
52
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment gérer les fichiers statiques
• Prochaine vidéo :
Express : Ecrire un middleware
10/03/2016
53
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Express :
Ecrire un middleware
Node et le Web
10/03/2016
54
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est-ce qu’un middleware ?
• L’ordre des fonctions
• Les différentes possibilités des middlewares
10/03/2016
55
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce qu’un middleware ?
• Express est une infrastructure web de routage.
• Il y a peu de fonctionnalités présentes par défaut.
• Une application développée avec Express, n’est ni plus ni moins qu’une
succession d’appels de fonctions middleware.
• Un middleware est une fonction qui a 3 arguments :
req : Classe “Request”, contient les informations de la requête
res : Classe “Response”, permet de forger la réponse
next : fonction middleware, qui appelle le middleware suivant
10/03/2016
56
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce qu’un middleware ?
• Les fonctions middleware effectuent les tâches suivantes :
Exécuter tout type de code.
Apporter des modifications aux objets de demande et de réponse.
Terminer le cycle de demande-réponse.
Appeler le middleware suivant dans la pile.
• Attention : Une fonction middleware doit appeler la fonction next() pour
transmettre le contrôle à la fonction middleware suivante. Sinon, la
demande restera bloquée.
• Cours : ‘FR_260_02_06/Cours/middleware_logger.js’
10/03/2016
57
Formation NodeJS, avancé alphorm.com™©
L’ordre des fonctions
• L’ordre des fonctions est très important.
• Une fois qu’une fonction middleware finit le cycle, toutes les fonctions
qui se trouvent après ne seront pas appelées.
• Cours : ‘FR_260_02_06/Cours/middleware_logger.js’
10/03/2016
58
Formation NodeJS, avancé alphorm.com™©
Les différentes possibilités des middlewares
• Il est possible de transmettre stocker des informations dans request ou
response.
• Par exemple pour :
Récupérer plus d'information sur le serveur (header)
Ajouter des éléments nécessaires à la réponse
Faire un middleware d'authentification (Oauth, ...)
Utiliser un moteur de modèle
Parse un body d'une requête POST
...
• Cours : ‘FR_260_02_06/Cours/middleware_time.js’
10/03/2016
59
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Qu’est ce qu’était un middleware
Nous avons pu voir comprendre comment Express fonctionne.
Les différentes possibilités offertes par les middlewares
• Prochaine vidéo :
Express : Les moteurs de template
10/03/2016
60
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Express :
Les moteurs de template
Node et le Web
10/03/2016
61
Formation NodeJS, avancé alphorm.com™©
Plan
• Intégrer un moteur de template
• Consolidate.js : Intégration dans Express
10/03/2016
62
Formation NodeJS, avancé alphorm.com™©
Intégrer un moteur de template
• Un moteur de template permet de générer du code HTML à partir d'un
code plus simple.
• On peut y intégrer des variables et des objets, ce qui permet de rendre
le template "dynamique".
• Le template est le squelette de la page.
• Suivant les données que nous recevons du Model (db, api, etc), le
moteur de template va compléter le template et générer de l'HTML.
• Avec Express, on utilise beaucoup Jade.
• Cours : ‘FR_260_02_06/Cours/express_jade.js’
10/03/2016
63
Formation NodeJS, avancé alphorm.com™©
Consolidate.js : Intégration dans Express
• Consolidate.js rassemble énormément de moteurs de template :
atpl
doT.js (website)
dust (unmaintained) (website)
…
• Cours : ‘FR_260_02_06/Cours/express_consolidate.js’
10/03/2016
64
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Qu’elle est l’utilité d’un moteur de template.
Comment l’utiliser et comment envoyer des variables au template.
• Prochaine vidéo :
Side project : ChatWithMe
10/03/2016
65
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Side project :
ChatWithMe
Node et le Web
10/03/2016
66
Formation NodeJS, avancé alphorm.com™©
Plan
• Créer le projet avec Express
• Créer un projet sur github
• Lier le projet sur github
• Initialiser NPM
• Copier le code
10/03/2016
67
Formation NodeJS, avancé alphorm.com™©
Hello word
Let’s code
10/03/2016
68
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Nous avons une bonne base pour commencer le développement de
notre application !
• Prochain chapitre :
L’asynchrone en détail
10/03/2016
69
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Callback
Hell & Pyramid of Doom
L’asynchrone en détail
10/03/2016
70
Formation NodeJS, avancé alphorm.com™©
Plan
• Pyramid of doom
• Callback hell
• Comment éviter les pièges ?
10/03/2016
71
Formation NodeJS, avancé alphorm.com™©
Pyramid of doom
• La pyramide de la malediction
• C’est le fait d’enchainer les blocks en cascade
10/03/2016
72
Formation NodeJS, avancé alphorm.com™©
Callback hell
• En JavaScript, quand une tâche est faite, la callback définie est appelée
• On peut rapidement arriver à un code comme ci-dessous:
10/03/2016
73
Formation NodeJS, avancé alphorm.com™©
Comment éviter les pièges ?
• Nommer les fonctions anonymes
Le code est plus simple à lire
Quand une exception arrive, les fonctions dans la stacktrace seront nommées
• Garder le code peu profond
• Modulariser !
Node permet de créer des modules très facilement, profitez s'en !
Issac Schlueter "Ecrire de petits modules qui font qu'une seule chose, puis les
assembler dans d'autres modules qui feront de plus grande chose. Vous ne
pouvez pas entrer dans l'enfer rappel si vous n'y allez pas."
10/03/2016
74
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Exercices: ‘FR_260_03_00/Exercice/code_sale.js’
Corrigé: ‘FR_260_03_00/Exercice/code_sale_corrigé.js’
10/03/2016
75
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Quelles sont les plus gros pièges de JavaScript et de NodeJS
• Prochaine vidéo :
Async : Cours
10/03/2016
76
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Async : Cours
L’asynchrone en détail
10/03/2016
77
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est-ce que Async ?
• Exemples
10/03/2016
78
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce que async ?
• API : https://github.com/caolan/async
• Async est un module communautaire qui fournit de simple et de
puissantes fonctions pour travailler avec les fonctions JS asynchrones.
• Async gère 3 categories :
Les collections
Le control Flow
Utils
10/03/2016
79
Formation NodeJS, avancé alphorm.com™©
Exemples
Cours: ‘FR_260_03_01/Cours/’
10/03/2016
80
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Cours: ‘FR_260_03_00/Cours/code_sale.js’
10/03/2016
81
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Les principaux usages de async
• Filter
• Map
• Parallel
• Serie
• waterfall
• Prochaine vidéo :
Async : Exercices
10/03/2016
82
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Async : Exercices
Partie 1
L’asynchrone en détail
10/03/2016
83
Formation NodeJS, avancé alphorm.com™©
Plan
• Async-you
Waterfall
Series objects
Each
Map
10/03/2016
84
Formation NodeJS, avancé alphorm.com™©
Async-you
• Async-you est un programme intéractif qui corrigera automatiquement
vos exercices.
• Tous les exercices sont traduits en francais.
• Je commenterai moi-même le code corrigé
• Pour installer :
$> npm install –g async-you
• Pour lancer :
$> async-you
• Changer la langue en Francais, si vous le désirez
10/03/2016
85
Formation NodeJS, avancé alphorm.com™©
Async-you
Let’s code
Exercices: ‘FR_260_03_02/Exercices/’
10/03/2016
86
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Les principaux usages de async
• Waterfall
• Serie
• Each
• Map
• Prochaine vidéo :
Async : Exercices Partie 2
10/03/2016
87
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Async : Exercices
Partie 2
L’asynchrone en détail
10/03/2016
88
Formation NodeJS, avancé alphorm.com™©
Plan
• Async-you
Times
Reduce
Whilst
10/03/2016
89
Formation NodeJS, avancé alphorm.com™©
Async-you
Let’s code
Exercices: ‘FR_260_03_02/Exercices/’
10/03/2016
90
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Les principaux usages de async
• Times
• Reduce
• whilst
• Prochaine vidéo :
Les promesses avec Q: Les fondamentaux
10/03/2016
91
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Les promesses avec Q :
Les fondamentaux
L’asynchrone en détail
10/03/2016
92
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est-ce que sont les promesses?
• Module Q
• Installation de Q
• Faire une promesse basée sur une tâche
• Chainer les actions
10/03/2016
93
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce que “Promise” ?
• Promise en anglais
• Les promises fournissent une alternative aux callbacks lorsqu’on traite
un code asynchrone.
• Une promesse est une abstraction pour la programmation asynchrone.
• C’est un objet qui proxifie une valeur de retour ou une exception
renvoyée par une fonction qui doit faire un traitement asynchrone.
• Malheureusement, la compréhension des promesses n’est pas facile.
10/03/2016
94
Formation NodeJS, avancé alphorm.com™©
Module Q
• Il existe plusieurs interprétations des promesses.
• Les promesses sont intégrées dans ECMAscript6
• API : https://github.com/kriskowal/q
• Cours: ‘FR_260_03_03/Cours/introduction.js’
10/03/2016
95
Formation NodeJS, avancé alphorm.com™©
Installation de Q
• Avec nodeJS
$> npm install q
• Coté client, avec un navigateur web
<script src="q.min.js"></script>
10/03/2016
96
Formation NodeJS, avancé alphorm.com™©
Faire une promesse basée sur une tache
Let’s code
Cours: ‘FR_260_03_03/Cours/premiere_promesse.js’
10/03/2016
97
Formation NodeJS, avancé alphorm.com™©
Chainer les actions
Let’s code
Cours: ‘FR_260_03_03/Cours/chainer_les_actions.js’
10/03/2016
98
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Les principaux usages des promesses avec Q
Comment créer une promesse
Comment chainer plusieurs actions
• Prochaine vidéo :
Les promesses avec Q : les conditions et les boucles
10/03/2016
99
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Les promesses avec Q :
Les conditions et les
boucles
L’asynchrone en détail
10/03/2016
100
Formation NodeJS, avancé alphorm.com™©
Plan
• Utilisation de condition dans une promesse
• Utilisation de boucle avec une promesse
10/03/2016
101
Formation NodeJS, avancé alphorm.com™©
Utilisation de condition dans une promesse
Let’s code
Cours: ‘FR_260_03_05/Cours/condition.js’
10/03/2016
102
Formation NodeJS, avancé alphorm.com™©
Utilisation d’une boucle avec une promesse
Let’s code
Cours: ‘FR_260_03_05/Cours/boucle.js’
10/03/2016
103
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment gérer les conditions et les boucles
• Prochaine vidéo :
Les promesses avec Q : la gestions des erreurs
10/03/2016
104
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Les promesses avec Q :
La gestion des erreurs
et les accès directs
L’asynchrone en détail
10/03/2016
105
Formation NodeJS, avancé alphorm.com™©
Plan
• La gestion des erreurs avec Q
• Gestion des objets avec les méthodes
10/03/2016
106
Formation NodeJS, avancé alphorm.com™©
La gestion des erreurs avec Q
• Q inclut une gestion “standard” des erreurs
• La fonction then peut prendre deux arguments, le second argument est
une fonction anonyme qui sera appelée si une erreur intervient
• De plus avec deferred, on peut appeler .reject(arg en erreur).
• En plus des .then(), on peut ajouter un .fail() qui récupérera les erreurs
non traitées.
• Cours: ‘FR_260_03_06/Cours/erreurs.js’
10/03/2016
107
Formation NodeJS, avancé alphorm.com™©
Gestion des objets avec les méthodes
• Il est possible d'utiliser des méthodes de Q qui vont vous permettre de
manipuler les données lors du flow des promesses.
• C'est un gain de temps
• Permettra de rendre votre code encore plus clair et concis.
• Cours: ‘FR_260_03_06/Cours/manipulation_object.js’
10/03/2016
108
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment gérer les erreurs
Comment accéder en direct à certaines fonctions de Q
• Prochaine vidéo :
Les promesses avec Q : Flow, Timers et I/O
10/03/2016
109
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Les promesses avec Q :
Flow, Timers et I/O
L’asynchrone en détail
10/03/2016
110
Formation NodeJS, avancé alphorm.com™©
Plan
• Composer un flow
• Les timers
• Les modules I/O
10/03/2016
111
Formation NodeJS, avancé alphorm.com™©
Composer un flow
• Les promesses de base supportent seulement un seul flow à la fois. Q permet de
gérer plusieurs flow.
• Imaginons, nous avons deux flow :
Un qui fait une requête
Un qui log la tâche
• Grâce à Q, il est possible de regrouper plusieurs promesses distinctes sous une
"grosse" promesse.
• Si un des deux flow a une erreur, l'autre tâche est quand même exécutée
• Si une des sous-promesses est en erreur, toutes les promesses sont arrêtées et
mises en "fail".
• Cours: ‘FR_260_03_07/Cours/composer_un_flow.js’
10/03/2016
112
Formation NodeJS, avancé alphorm.com™©
Les timers
• Les promesses ont deux systèmes de contrôle de temps :
.delay(ms)
.timeout(ms)
• Cours: ‘FR_260_03_07/Cours/timers.js’
10/03/2016
113
Formation NodeJS, avancé alphorm.com™©
Les modules I/O
• Q nous propose des fonctions qui permettent de faire appel à des
fonctions des modules I/O :
Q.nfapply(func, args)
Q.nfcall(func, arg1, arg2, ...)
Q.nfbind(func, arg1, arg2,...)
Q.npost(obj, name, args)
Q.nsend(obj, name, arg1, arg2, ...)
• Ne fonctionne pas avec le module HTTP
• Cours: ‘FR_260_03_07/Cours/module_io.js’
10/03/2016
114
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment composer un flow complex
Comment utiliser les timers
Comment utiliser les modules I/O
• Prochaine vidéo :
Les promesses : Exercices Partie 1
10/03/2016
115
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Les promesses :
Exercices Partie 1
L’asynchrone en détail
10/03/2016
116
Formation NodeJS, avancé alphorm.com™©
Plan
• promise-it-wont-hurt
Accomplir une promesse
Rejeter une promesse
Rejet ou ne pas rejeter
Toujours asynchrones
Valeurs et promesses
Lever une erreur
10/03/2016
117
Formation NodeJS, avancé alphorm.com™©
promise-it-wont-hurt
• Promise-it-wont-hurt est un programme intéractif qui corrigera
automatiquement vos exercices.
• Tous les exercices sont traduits en français.
• Je commenterai moi-même le code corrigé
• Pour installer :
$> npm install –g promise-it-wont-hurt
• Pour lancer :
$> promise-it-wont-hurt
• Changer la langue en Français, si vous le désirez
10/03/2016
118
Formation NodeJS, avancé alphorm.com™©
promise-it-wont-hurt
Let’s code
Exercices: ‘FR_260_03_08/Exercices/’
10/03/2016
119
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons revu les principaux usages des promises.
• Prochain chapitre :
Les promesses : Exercices Partie 2
10/03/2016
120
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Les promesses :
Exercices Partie 2
L’asynchrone en détail
10/03/2016
121
Formation NodeJS, avancé alphorm.com™©
Plan
• promise-it-wont-hurt
Utiliser qfcall
Une règle importante
Promesses multiples
Récurérer un JSON
Faire plus de boulot
10/03/2016
122
Formation NodeJS, avancé alphorm.com™©
promise-it-wont-hurt
Let’s code
Exercices: ‘FR_260_03_09/Exercices/’
10/03/2016
123
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons revu les principaux usages des promises.
• Prochain chapitre :
Communication temps réel
10/03/2016
124
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Socket.io
Communication temps réel
10/03/2016
125
Formation NodeJS, avancé alphorm.com™©
Plan
• Un peu d'histoire
• WebSocket
10/03/2016
126
Formation NodeJS, avancé alphorm.com™©
Un peu d'histoire
• Avant, pour mettre à jour une information sur une page web :
• Tous les 5 minutes, nous mettons à jour nos données.
• C'est aussi efficace que le protocole "Transmission de datagramme IP
par pigeons"
• http://www.rfc-editor.org/rfc/rfc1149.txt
10/03/2016
127
Formation NodeJS, avancé alphorm.com™©
Un peu d'histoire
• Vu qu'on veut mettre à jour souvent, on baisse le rafraichissement
• En créant autant de requêtes, de nouveaux problèmes apparaissent :
Si la requête HTTP met plus de 100 millisecondes, deux requêtes sont lancées
parallèlement.
Quand le serveur n'a pas de nouvelle donnée, ces requêtes sont toutes
simplement de la consommation de ressource inutile.
10/03/2016
3
Formation NodeJS, avancé alphorm.com™©
Présentation du formateur
Edouard FERRARI
• contact@ferrari.wf
• 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
10/03/2016
129
Formation NodeJS, avancé alphorm.com™©
WebScocket
• Les WebSocket permettent de fournir un mécanisme pour les
navigateurs qui ont besoin de communiquer
Avec un navigateur
Des deux sens (upload, download)
et reste ouvert après avoir reçu les données
• Il est ajouté à partir du protocole HTTP/1.1
• Malgré ça, il reste deux problèmes majeurs :
Le serveur de destination et tous les serveurs en relais (Cache, Reverse proxy,
load balancer, ...) doivent savoir comment gérer ce protocole.
Beaucoup d'ancien navigateur ne supporte pas ce protocole.
10/03/2016
130
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
A partir de quelle problèmatique les websocket et socket.io ont été créés
Une rapide overview du protocole websocket.
• Prochaine vidéo :
Intégration dans Express
10/03/2016
131
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Intégration à Express
Communication temps réel
10/03/2016
132
Formation NodeJS, avancé alphorm.com™©
Plan
• Ajouter le code côté serveur
• Ajouter le code côté client
• Side project : ChatWithMe
10/03/2016
133
Formation NodeJS, avancé alphorm.com™©
Cours
Ajouter le code côté serveur
Cours : ‘FR_260_04_01/Cours/’
10/03/2016
134
Formation NodeJS, avancé alphorm.com™©
Cours
Ajouter le code côté client
Cours : ‘FR_260_04_01/Cours/’
10/03/2016
135
Formation NodeJS, avancé alphorm.com™©
Side project: ChatWithMe
• Intégrer socket.io dans ChatWithMe
• Side project : ‘ChatWithMe/’
10/03/2016
136
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu comment préparer un projet pour
socket.io
• Prochaine vidéo :
Projet : ChatWithMe, le code backend
10/03/2016
137
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Side Project :
ChatWithMe, le code
Backend
Communication temps réel
10/03/2016
138
Formation NodeJS, avancé alphorm.com™©
Plan
• Arborescence des objets et des Managers
• Liste des requêtes vers le backend
• Let’s code !
10/03/2016
139
Formation NodeJS, avancé alphorm.com™©
Arborescence des objets et des Managers
userManager User
RoomManager room
Message
10/03/2016
140
Formation NodeJS, avancé alphorm.com™©
Liste des requêtes backend
• Liste des requêtes backend
• JoinRoom : Le user joins une room.
• QuitRoom : Le user quitte la room.
• SetName : Le user change de nom
• NewMessage : Le user écrit un nouveau message dans une room
10/03/2016
141
Formation NodeJS, avancé alphorm.com™©
Liste des requêtes backend
• Quand l’utilisateur se connecte au serveur :
1. Le serveur transmet la liste des rooms à l’utilisateur.
• Quand l’utilisateur rejoint une room
1. La room avertit tous ses utilisateurs qu’un nouvel utilisateur est arrivé.
2. La room transmet tous ses informations au nouvel utilisateur.
• Quand un utilisateur écrit un message dans une room :
1. L’information est reçue dans l’objet user.
2. Transmets l’information à l’objet room.
3. L’objet room, transmet l’information à tous les utilisateurs.
10/03/2016
142
Formation NodeJS, avancé alphorm.com™©
ChatWithMe, le code Backend
Let’s code
Side project: ‘ChatWithMe/’
10/03/2016
143
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons développé le code backend pour les
requêtes suivantes :
JoinRoom
QuitRoom
SetName
NewMessage
• Prochaine vidéo :
Side Project : ChatWithMe, le code frontend
10/03/2016
144
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Side Project :
ChatWithMe, le code
Frontend
Communication temps réel
10/03/2016
145
Formation NodeJS, avancé alphorm.com™©
Plan
• Arborescence des fichiers
• Liste des requêtes vers le frontend
• Let’s code !
10/03/2016
146
Formation NodeJS, avancé alphorm.com™©
Arborescence des objets et des Managers
Realtime.js Room
10/03/2016
147
Formation NodeJS, avancé alphorm.com™©
Liste des requêtes backend
• Liste des requêtes frontend :
roomList : Une fois connecté, le serveur envoie la liste des rooms disponibles.
joinRoom : Une fois que nous avons rejoint une room, on reçoit toutes les
infos nécessaires à créer une nouvelle room.
roomNewUser : Un nouveau user rentre dans une room.
roomUsers : Si quelqu’un rentre ou sort de la room, on est averti par cette
requête.
roomMessages : Pas implémenté.
roomNewMessage : Si un user écrit un message, on est averti par cette
requête.
10/03/2016
148
Formation NodeJS, avancé alphorm.com™©
ChatWithMe, le code Front
Let’s code
Side project: ‘ChatWithMe/’
10/03/2016
149
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons développé le code frontend pour les
requêtes suivantes :
joinRoom
roomList
roomUsers
roomMessages
roomNewMessage
roomNewUser
• Prochain chapitre :
Liaison avec la persistance des données
10/03/2016
150
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Intégration avec une
base de données
relationnelle (Mysql)
Liaison avec la persistance
des données
10/03/2016
151
Formation NodeJS, avancé alphorm.com™©
Plan
• Introduction à Mysql
• Mysql avec Cloud9
• Let’s code
10/03/2016
152
Formation NodeJS, avancé alphorm.com™©
Introduction à Mysql
• MySQL est un système de gestion de bases de données relationnelles
(SGBDR).
• Formation complète sur Alphorm :
http://www.alphorm.com/tutoriel/formation-en-ligne-mysql-1z0-883
• Savoir comment utiliser Node.JS et Mysql est plus que nécessaire.
• Mysql est une base de données la plus utilisée dans le monde et très
performante.
• Tous les langages ont développé un driver pour interagir avec Mysql.
10/03/2016
153
Formation NodeJS, avancé alphorm.com™©
Mysql avec Cloud9
$> mysql-ctl start
$> mysql-ctl stop
$> mysql-ctl cli
• Informations :
Hostname – process.env.IP
Port - 3306 (Port par défaut de Mysql)
User – process.env.C9_USER
Password - `` (Pas de mot de passe)
Database - c9 (Le nom de la base de données)
10/03/2016
154
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Cours : ‘FR_260_05_00/Cours/’
10/03/2016
155
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment utiliser mysql avec NodeJs
• Prochaine vidéo :
Sequelize, l’introduction
10/03/2016
156
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Sequelize, l’introduction
Liaison avec la persistance
des données
10/03/2016
157
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est ce qu’un ORM ?
• Sequelize
• Let’s code
10/03/2016
158
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce qu’un ORM
• Un mapping objet-relationnel (en anglais object-relational
mapping ou ORM)
• C’est une technique de programmation informatique qui crée l'illusion
d'une base de données orientée objet à partir d'une base de données
relationnelle.
• L’ORM définit des correspondances entre cette base de données et les
objets du langage utilisé.
• On pourrait le désigner par :
« correspondance entre monde objet et monde relationnel »
10/03/2016
159
Formation NodeJS, avancé alphorm.com™©
Sequelize
• Sequelize est un ORM basé sur les promesses pour NodeJS
• http://docs.sequelizejs.com/en/latest/
• Il supporte les bases de données suivantes :
PostgreSQL
MySQL
MariaDB
SQLite
MSSQL
• Et des fonctionnalités de transaction, relations, read replication, …
10/03/2016
160
Formation NodeJS, avancé alphorm.com™©
Sequelize
• La première chose à faire est de définir les modèles
• Sequelize, nous permet de définir les champs que nous utiliserons.
http://docs.sequelizejs.com/en/latest/docs/models-definition/
10/03/2016
161
Formation NodeJS, avancé alphorm.com™©
Sequelize
• De plus, Sequelize fonctionne avec les promises.
• Cela ne fonctionne pas !
• Ce qu’il faut faire :
10/03/2016
162
Formation NodeJS, avancé alphorm.com™©
Let’s code
• Maintenant, nous allons voir les grandes utilisations de Sequelize:
La configuration
La création de tables
L’insertion de données
Comment retrouver ses données
• Cours : ‘FR_260_05_01/Cours/’
10/03/2016
163
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment utiliser sequelize
Comment éviter les pièges
Et partir sur de bonne base
• Prochaine vidéo :
Sequelize, les associations
10/03/2016
164
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Sequelize, les associations
Liaison avec la persistance
des données
10/03/2016
165
Formation NodeJS, avancé alphorm.com™©
Plan
• Les différents types de liaison
• Let’s code
10/03/2016
166
Formation NodeJS, avancé alphorm.com™©
Les différents types de liaison
• Avec les ORMs, il existe plusieurs types de liaison.
• Les One-to-One
BelongsTo: “Appartient à”, un Post appartient à un User.
HasOne: “à un” object
HasMany: “à plusieurs” object, un User peut avoir plusieurs Post.
…
• http://docs.sequelizejs.com/en/latest/docs/associations/
10/03/2016
167
Formation NodeJS, avancé alphorm.com™©
Les différents types de liaison
• Les associations vont nous permettre de lier les données
• Par exemples, deux tables :
Users (id, firstname, lastname)
Users-Posts (id, userId, subject, content)
10/03/2016
168
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Cours : ‘FR_260_05_02/Cours/association.js’
10/03/2016
169
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment faire des associations de table
• Prochaine vidéo :
Interaction avec une base de données NoSQL : Redis
10/03/2016
170
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Interaction avec une
base de données
NoSQL : Redis
Liaison avec la persistance
des données
10/03/2016
171
Formation NodeJS, avancé alphorm.com™©
Plan
• Introduction à Redis
• Redis avec Cloud9
• Let’s code
10/03/2016
172
Formation NodeJS, avancé alphorm.com™©
Introduction à Redis
• Redis (de l'anglais REmote DIctionary Server qui peut être traduit par «
serveur de dictionnaire distant » et jeu de mots avec Redistribute).
• C’est un système de gestion de bases de données clef-valeur scalable,
très hautes performances, écrit avec le langage de programmation C.
• Il fait partie du mouvement NoSQL et vise à fournir les performances les
plus élevées possibles.
http://redis.io/commands
10/03/2016
173
Formation NodeJS, avancé alphorm.com™©
Redis avec Cloud9
• Pour lancer le serveur
$> sudo service redis-server start
• Pour se connecter au serveur
$> redis-cli
10/03/2016
174
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Cours : ‘FR_260_05_03/Cours/’
10/03/2016
175
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment utiliser redis avec NodeJs
• Prochaine vidéo :
Interaction avec une base de données NoSQL : MongoDB, l’introduction
10/03/2016
176
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Intégration avec une base
de données NoSQL :
MongoDB, l’introduction
Liaison avec la persistance
des données
10/03/2016
177
Formation NodeJS, avancé alphorm.com™©
Plan
• Introduction à MongoDB
• MongoDB avec Cloud9
• CRUD
10/03/2016
178
Formation NodeJS, avancé alphorm.com™©
Introduction à MongoDB
• MongoDB de l'anglais humongous qui peut être traduit par « énorme »
• C’est un système de gestion de bases de données :
Orientée documents.
Répartissable sur un nombre quelconque d'ordinateurs.
Ne nécessitant pas de schémas prédéfinis des données.
• Il est écrit en C++.
• Il fait partie du mouvement NoSQL.
10/03/2016
179
Formation NodeJS, avancé alphorm.com™©
MongoDB avec Cloud9
• Pour lancer le serveur
$> mongod --nojournal
• Pour se connecter au serveur
$> mongo
10/03/2016
180
Formation NodeJS, avancé alphorm.com™©
CRUD
• Nous allons voir les principales utilisations de mongodb avec
mongoose.
Create : ‘FR_260_05_05/Cours/create.js’
Read: ‘FR_260_05_05/Cours/read.js’
Update: ‘FR_260_05_05/Cours/update.js’
Delete: ‘FR_260_05_05/Cours/delete.js
10/03/2016
181
Formation NodeJS, avancé alphorm.com™©
Pour aller plus loi
• Une formation complète sur Mongodb sur Alphorm :
http://www.alphorm.com/tutoriel/formation-en-ligne-mongodb-
administration
10/03/2016
182
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment utiliser MongoDB avec mongoose.
• Prochaine vidéo :
Interaction avec une base de données NoSQL : MongoDB, les associations
10/03/2016
183
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Intégration avec une base
de données NoSQL :
MongoDB, les associations
Liaison avec la persistance
des données
10/03/2016
184
Formation NodeJS, avancé alphorm.com™©
Plan
• Les associations
• Let’s code
10/03/2016
185
Formation NodeJS, avancé alphorm.com™©
Les associations
• De la même façon qu’avec MySQL, nous allons lier les users et les posts.
10/03/2016
186
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Cours : ‘FR_260_05_05/Cours/associate.js’
10/03/2016
187
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment faire des associations de documents avec MongoDb
• Prochaine vidéo
Intégration de MySQL à ChatWithMe
10/03/2016
188
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Intégration de MySQL
à ChatWithMe
Liaison avec la persistance
des données
10/03/2016
189
Formation NodeJS, avancé alphorm.com™©
Plan
•Let’s code
10/03/2016
190
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Side project: ‘ChatWithMe’
10/03/2016
191
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons intégré Mysql à ChatWithMe
• Prochaine vidéo
Intégration de Sequelize à ChatWithMe
10/03/2016
192
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Intégration de Sequelize
à ChatWithMe
Liaison avec la persistance
des données
10/03/2016
193
Formation NodeJS, avancé alphorm.com™©
Plan
•Let’s code
10/03/2016
194
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Side project: ‘ChatWithMe’
10/03/2016
195
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons intégré Sequelize à ChatWithMe
• Prochaine vidéo
Intégration de MongoDB à ChatWithMe
10/03/2016
196
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Intégration de MongoDB
à ChatWithMe
Liaison avec la persistance
des données
10/03/2016
197
Formation NodeJS, avancé alphorm.com™©
Plan
•Let’s code
10/03/2016
198
Formation NodeJS, avancé alphorm.com™©
Exemple
Let’s code
Side project: ‘ChatWithMe’
10/03/2016
199
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons intégré Mysql à ChatWithMe
• Prochaine chapitre
Intégration de Sequelize à ChatWithMe
10/03/2016
200
Formation NodeJS, avancé alphorm.com™©
PM2, le monitoring
Bonus
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
10/03/2016
201
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est ce que PM2 ?
• La gestion d’un processus
• Les actions sur le processus
• Les logs
• Lancer un processus avec des arguments
• Les limites
10/03/2016
202
Formation NodeJS, avancé alphorm.com™©
Qu’est ce que PM2 ?
• PM2 est un gestionnaire de processus de production pour les
applications Node.js avec un load balancer intégré.
• Il permet de garder les applications vivantes et les redémarrera si un
problème intervient.
• Il permet aussi de recharger le code de l’application sans couper les files
de description (Reload à chaud)
• https://github.com/Unitech/pm2
• Installation :
$> npm install –g pm2
10/03/2016
203
Formation NodeJS, avancé alphorm.com™©
La gestion d’un processus
• Démarrer le processus :
$> pm2 start bin/www
$> pm2 start bin/www --name ChatWithMe
• PM2 permet de démarer le processus en cluster mode, cela permettra
de profiter de l'ensemble des processus de la machine.
$> pm2 start bin/www -i 0 # démarre avec autant de processus que de
processeur.
• Pour lister les processus
$> pm2 list
10/03/2016
204
Formation NodeJS, avancé alphorm.com™©
La gestion d’un processus
• Afficher plus d'informations sur un processus en particulier
$> pm2 describe 0
• Monitorer les process lancés
$> pm2 monit
• Retire un processus de la liste
$> pm2 delete 0
$> pm2 delete all
10/03/2016
205
Formation NodeJS, avancé alphorm.com™©
Les actions sur le processus
• Différente actions :
$> pm2 stop all # Stop tous les processus
$> pm2 restart all # Restart tous les processus
$> pm2 reload all # Redémarrer un processus sans aucun downtime
$> pm2 gracefulReload all # Stop un processus, puis le relance
$> pm2 stop 0 # Stop un processus spécifique
$> pm2 restart 0 # Restart un processus spécifique
10/03/2016
206
Formation NodeJS, avancé alphorm.com™©
Les logs
• Gérer les logs
$> pm2 logs [--raw] # Affiche tous les logs
$> pm2 flush # Vide tous les logs
10/03/2016
207
Formation NodeJS, avancé alphorm.com™©
Lancer une processus avec des arguments
• Démarrer un processus avec des arguments
$> pm2 start app.js -- -a 23 # Passe l'argument '-a 23' à app.js
• Spécifier les logs explicitement
$> pm2 start app.js -e err.log -o out.log
10/03/2016
208
Formation NodeJS, avancé alphorm.com™©
Les limites
• Le module cluster de NodeJS ne permet pas de faire fonctionner
socket.io
• https://github.com/elad/node-cluster-socket.io
• Vu que PM2 utilise le module natif pour les clusters, PM2 ne supporte
pas non plus les socket.io.
10/03/2016
209
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Un projet de monitoring de processus NodeJS pour une mise en production !
Lancer en cluster un processus
Gérer les logs
• Prochaine vidéo :
Keymetrics, la supervision
10/03/2016
210
Formation NodeJS, avancé alphorm.com™©
Keymetrics,
la supervision
Bonus
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
10/03/2016
211
Formation NodeJS, avancé alphorm.com™©
Plan
• Qu’est-ce que Keymetrics ?
• Inscription
• Lien avec PM2
• Ajout de sondes
10/03/2016
212
Formation NodeJS, avancé alphorm.com™©
Qu’est-ce que Keymetrics ?
• Keymetrics permet d'afficher des statistiques remontées par pm2
https://keymetrics.io/
10/03/2016
213
Formation NodeJS, avancé alphorm.com™©
Inscription
• Inscription :
https://app.keymetrics.io/#/login
10/03/2016
214
Formation NodeJS, avancé alphorm.com™©
Lien avec PM2
• Pour lier Keymetrics avec un PM2
$> pm2 link xxxxxxxxxxx xxxxxxxxxx [hostname]
10/03/2016
215
Formation NodeJS, avancé alphorm.com™©
Ajouter des sondes
• C’est le module pmx qui permet d’ajouter des sondes :
npm install –save pmx
• Faire un wrapper (singleton) pour initialiser le module :
• Il existe 4 types de sondes :
« Simple metics » : Remonte un nombre
« Counter » : Incrémente et décrémente un nombre
« Meter » : Remonte un nombre sur le temps, ex Nombre de requêtes par seconde.
« Histogram » : Garde un réservoir de valeur sur les 5 dernières minutes
10/03/2016
216
Formation NodeJS, avancé alphorm.com™©
Exemple
Ajout de nouvelle sonde
Side project : ‘ChatWithMe’
10/03/2016
217
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
• Dans cette vidéo, nous avons vu :
Comment superviser un projet NodeJS
Comment remonter certaines informations métier
• Prochain chapitre :
La conclusion !
10/03/2016
218
Formation NodeJS, avancé alphorm.com™©
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Édouard FERRARI
Formateur et Consultant indépendant
Contact : contact@ferrari.wf
Conclusion
10/03/2016
219
Formation NodeJS, avancé alphorm.com™©
Ce qu’on a couvert
1. Comment installer et mettre en place un Express
1. Système de route
2. Gestion des fichiers statiques
3. Comment ajouter nos propres middlewares
4. Comment utiliser un moteur de template
2. Deux différentes méthodes de développement
asynchrone:
1. Async
2. Les promesses avec Q
3. La communication en temps raille avec les clients
(front-end) grâce à Socket.io
1. Comment sauvegarder des données en couvrant les
bases de donnée suivante :
1. Mysql
2. MariaDB
3. SQLite
4. Postgres
5. MSSql
6. Redis
7. MongoDB
2. Développer un projet NodeJS en MVC.
3. Comment monitorer et superviser le projet avec
PM2 et Keymetrics
10/03/2016
220
Formation NodeJS, avancé alphorm.com™©
Avez-vous des Questions / Remarques / Commentaires ?
10/03/2016
221
Formation NodeJS, avancé alphorm.com™©
A bientôt ☺
Keep in touch !
E-mail : edouard@ferrari.wf
Linkedin : https://fr.linkedin.com/in/edouardferrari
Twitter : https://twitter.com/edouard_ferrari
Alphorm : http://www.alphorm.com/formateur/edouard-ferrari

Mais conteúdo relacionado

Mais procurados

Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm
 
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...Alphorm
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm
 
Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)Alphorm
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm
 
Alphorm.com Support Formation SCOM 2012 R2, les fondamentaux
Alphorm.com Support Formation SCOM 2012 R2, les fondamentauxAlphorm.com Support Formation SCOM 2012 R2, les fondamentaux
Alphorm.com Support Formation SCOM 2012 R2, les fondamentauxAlphorm
 
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)Alphorm
 
Alphorm.com Formation Office 365 Avancé
Alphorm.com Formation Office 365 AvancéAlphorm.com Formation Office 365 Avancé
Alphorm.com Formation Office 365 AvancéAlphorm
 
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm
 
Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm
 
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...Alphorm
 
alphorm.com - Formation XenSources
alphorm.com - Formation XenSourcesalphorm.com - Formation XenSources
alphorm.com - Formation XenSourcesAlphorm
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm
 
alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0Alphorm
 
Alphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentauxAlphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentauxAlphorm
 
Alphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm
 
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm
 

Mais procurados (20)

Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancé
 
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1
 
Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFX
 
Alphorm.com Support Formation SCOM 2012 R2, les fondamentaux
Alphorm.com Support Formation SCOM 2012 R2, les fondamentauxAlphorm.com Support Formation SCOM 2012 R2, les fondamentaux
Alphorm.com Support Formation SCOM 2012 R2, les fondamentaux
 
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
 
Alphorm.com Formation Office 365 Avancé
Alphorm.com Formation Office 365 AvancéAlphorm.com Formation Office 365 Avancé
Alphorm.com Formation Office 365 Avancé
 
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
 
Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2
 
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
 
alphorm.com - Formation XenSources
alphorm.com - Formation XenSourcesalphorm.com - Formation XenSources
alphorm.com - Formation XenSources
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautés
 
alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0
 
Alphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentauxAlphorm.com Support de la Formation CATIA V5 , les fondamentaux
Alphorm.com Support de la Formation CATIA V5 , les fondamentaux
 
Alphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeurs
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NET
 
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
 

Destaque

Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm
 
Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm
 
Alphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm
 
Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)Alphorm
 
Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm
 
Alphorm.com ressources-formation-hacking-et-securite-reseaux-sans-fils
Alphorm.com ressources-formation-hacking-et-securite-reseaux-sans-filsAlphorm.com ressources-formation-hacking-et-securite-reseaux-sans-fils
Alphorm.com ressources-formation-hacking-et-securite-reseaux-sans-filsAlphorm
 
Alphorm.com Support de la Formation Stormshield Administration
Alphorm.com Support de la Formation Stormshield AdministrationAlphorm.com Support de la Formation Stormshield Administration
Alphorm.com Support de la Formation Stormshield AdministrationAlphorm
 
Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0Alphorm
 
Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...
Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...
Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...Alphorm
 
Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2Alphorm
 
Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11Alphorm
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)Alphorm
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm
 
Alphorm.com Support de la Formation Hyper-v 2016
Alphorm.com Support de la Formation Hyper-v 2016Alphorm.com Support de la Formation Hyper-v 2016
Alphorm.com Support de la Formation Hyper-v 2016Alphorm
 

Destaque (20)

Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScript
 
Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée Alphorm.com Formation Docker (2/2) - Administration Avancée
Alphorm.com Formation Docker (2/2) - Administration Avancée
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
 
Alphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : Avancé
 
Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)Alphorm.com formation Red Hat (RH134)
Alphorm.com formation Red Hat (RH134)
 
Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)
 
Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows Containers
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.x
 
Alphorm.com ressources-formation-hacking-et-securite-reseaux-sans-fils
Alphorm.com ressources-formation-hacking-et-securite-reseaux-sans-filsAlphorm.com ressources-formation-hacking-et-securite-reseaux-sans-fils
Alphorm.com ressources-formation-hacking-et-securite-reseaux-sans-fils
 
Alphorm.com Support de la Formation Stormshield Administration
Alphorm.com Support de la Formation Stormshield AdministrationAlphorm.com Support de la Formation Stormshield Administration
Alphorm.com Support de la Formation Stormshield Administration
 
Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0Alphorm.com Support de la formation Vmware Esxi 6.0
Alphorm.com Support de la formation Vmware Esxi 6.0
 
Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...
Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...
Alphorm.com Support de la Formation Microsoft Identity Manager (MIM) 2016 Imp...
 
Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2
 
Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jour
 
Alphorm.com Support de la Formation Hyper-v 2016
Alphorm.com Support de la Formation Hyper-v 2016Alphorm.com Support de la Formation Hyper-v 2016
Alphorm.com Support de la Formation Hyper-v 2016
 

Semelhante a Alphorm.com Support de la formation NodeJS , avancé

Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm
 
présentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfprésentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfghiz-
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Microsoft
 
Alphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, ExpertAlphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, ExpertAlphorm
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applicationsMohammed Jaafar
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
S35 developper en node.js versus php
S35   developper en node.js versus phpS35   developper en node.js versus php
S35 developper en node.js versus phpGautier DUMAS
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Luc Juggery
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm
 
Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)Joffrey LEVEUGLE
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4CERTyou Formation
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Cédric Leblond
 

Semelhante a Alphorm.com Support de la formation NodeJS , avancé (20)

Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
Hamdi afef cv
Hamdi afef cvHamdi afef cv
Hamdi afef cv
 
présentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdfprésentation sur la gestion des projets.pdf
présentation sur la gestion des projets.pdf
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4
 
Alphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, ExpertAlphorm.com Support Formation Android 6, Expert
Alphorm.com Support Formation Android 6, Expert
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
S35 developper en node.js versus php
S35   developper en node.js versus phpS35   developper en node.js versus php
S35 developper en node.js versus php
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
 
Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)Nuxt.js et les applications isomorphiques (Universelles/SSR)
Nuxt.js et les applications isomorphiques (Universelles/SSR)
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
Symfony
SymfonySymfony
Symfony
 

Mais de Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 

Mais de Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 

Alphorm.com Support de la formation NodeJS , avancé

  • 1. 10/03/2016 1 Formation NodeJS, avancé alphorm.com™© Formation Avancée de NodeJS Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf
  • 2. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 3. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 4. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 5. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 6. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 7. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 8. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 9. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 10. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 11. 10/03/2016 2 Formation NodeJS, avancé alphorm.com™© Plan • Présentation du formateur • Plan de formation • Objectifs de la formation • Public concerné • Les possibilités de NodeJS • Les connaissances requises
  • 12. 10/03/2016 12 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Scénario de la formation
  • 13. 10/03/2016 13 Formation NodeJS, avancé alphorm.com™© Plan • Formation • Side project : ChatWithMe
  • 14. 10/03/2016 14 Formation NodeJS, avancé alphorm.com™© Formation • Cette formation est une seconde partie de la formation complète de NodeJs, les fondamentaux. • Dans cette seconde partie, nous verrons ensemble : Comment utiliser un des frameworks les plus utilisés de NodeJS : Express Deux méthodes de code asynchrone. Comment communiquer du code JavaScript côté client (navigateur web) Comment sauvegarder nos données dans des bases de données ou dans des fichiers • En plus, dans cette formation, nous développerons une plateforme web sur le modèle MVC et avec une abstraction de base de donnée.
  • 15. 10/03/2016 15 Formation NodeJS, avancé alphorm.com™© Side Project : ChatWithMe • À partir d’un squelette, nous allons développer une base solide d’un chat. • Nous développerons par étape 1. Le serveur web. 2. La communication en temps réel avec le navigateur. 3. La sauvegarde des données. 4. Le monitoring de l’application • Libre à vous d’améliorer ce projet après cette formation.
  • 16. 10/03/2016 16 Formation NodeJS, avancé 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 espace utilisateur sur Alphorm.com • Prochain chapitre: Node et le Web : HTTP, Request & Express
  • 17. 10/03/2016 17 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Périmètre du module HTTP Node et le Web
  • 18. 10/03/2016 18 Formation NodeJS, avancé alphorm.com™© Plan • Rappel • Une requête HTTP (partie client) • Un serveur HTTP (partie serveur)
  • 19. 10/03/2016 19 Formation NodeJS, avancé alphorm.com™© Rappel • 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
  • 20. 10/03/2016 20 Formation NodeJS, avancé alphorm.com™© Une requête HTTP (partie client) • Créons notre premier script pour envoyer une requête avec ‘http’ • Dans ‘FR_260_02_00/Exercices/’ Faire un script qui se connectera à l’URL https://httpbin.org/get en GET Faire un script qui se connectera à l’URL https://httpbin.org/post en POST avec en ‘formData’ : • User : ‘bob’ • Message : “Bonjour !” • Correction : • ‘FR_260_02_00/Exercices/exercice_request_get_corrigé.js’ • ‘FR_260_02_00/Exercices/exercice_request_post_corrigé.js’
  • 21. 10/03/2016 21 Formation NodeJS, avancé alphorm.com™© Un serveur HTTP (partie serveur) • Dans ‘FR_260_02_00/Exercices/’ • Développer un serveur HTTP et gérer différemment les requêtes GET et POST • Bonus : Gérer deux routes différentes : http://localhost:12000/users http://localhost:12000/media • Correction : ‘FR_260_02_00/Exercices/exercice_server_http_corrigé.js’
  • 22. 10/03/2016 22 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Un rapide rappel de NodeJS Comment lancer une requête HTTP avec le module natif. La difficulté de créer un serveur HTTP avec le module natif. • Dans la prochaine vidéo, nous verrons le module Request, qui est une abstraction des modules natifs HTTP/HTTPS, et qui prend en charge énormément de fonctionnalités.
  • 23. 10/03/2016 23 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Request Node et le Web
  • 24. 10/03/2016 24 Formation NodeJS, avancé alphorm.com™© Plan • Le module Request • Les requêtes HTTP(s)
  • 25. 10/03/2016 25 Formation NodeJS, avancé alphorm.com™© Le module Request • Le module Request est une abstraction de différents modules natifs de NodeJs. • Il est designé pour être le plus simple possible d’utilisation. • Supporte : HTTP / HTTPS Suit les redirections 2xx Gère les requêtes en event ou stream/pipe … • API https://github.com/request/request
  • 26. 10/03/2016 26 Formation NodeJS, avancé alphorm.com™© Les requêtes HTTP(s) • Créons notre premier script pour envoyer une requête avec ‘request’ • Dans ‘FR_260_02_01/Exercices/’ Faire un script qui se connectera à l’URL https://httpbin.org/get en GET Faire un script qui se connectera à l’URL https://httpbin.org/post en POST avec en ‘formData’ : • User : ‘bob’ • Message : “Bonjour !” • Correction : • ‘FR_260_02_01/Exercices/exercice_request_get_corrigé.js’ • ‘FR_260_02_01/Exercices/exercice_request_post_corrigé.js’
  • 27. 10/03/2016 27 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment lancer des requêtes HTTP(s) avec request • Prochaine vidéo : Serveur Web avec Express
  • 28. 10/03/2016 28 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Serveur Web avec Express Node et le Web
  • 29. 10/03/2016 29 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce qu’Express ? • Installation • Hello word • le ‘Generator’
  • 30. 10/03/2016 30 Formation NodeJS, avancé alphorm.com™© Qu’est-ce qu’Express ? • Express est une infrastructure web minimaliste, souple et rapide pour Node.JS • Express fournit un ensemble de fonctionnalités robustes pour les applications web et mobiles. • Grâce à une foule de méthodes utilitaires HTTP et de middleware mise à votre disposition, la création d'une API robuste est simple et rapide. • Express apporte une couche fine de fonctionnalités d'application Web fondamentales, sans masquer les fonctionnalités de Node.js que vous connaissez et appréciez.
  • 31. 10/03/2016 31 Formation NodeJS, avancé alphorm.com™© Installation • Allez dans ‘FR_260_02_02/Cours/hello_word’ • Créer un projet NodeJS : npm init • Puis installer express : npm install --save express
  • 32. 10/03/2016 32 Formation NodeJS, avancé alphorm.com™© Hello word Let’s code Cours : ‘FR_260_02_02/Cours/hello_word/index.js’
  • 33. 10/03/2016 33 Formation NodeJS, avancé alphorm.com™© Le ‘Generator’ • Le generator est un outil pour créer un squelette rapidement. • Dans ‘FR_260_02_02/Cours/’ • Installer le generator : $> npm install express-generator –g • Générer un projet : $> express myapp • Aller dans le projet : $> cd myapp • Installer les modules nécessaires : $> npm install • Lancer le projet : $> DEBUG=myapp:* npm start
  • 34. 10/03/2016 34 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment créer un projet Express Comment créer un serveur HTTP très light Comment générer un squelette pour express • Prochaine vidéo : Express : Router les requêtes
  • 35. 10/03/2016 35 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Express : Router les requêtes Node et le Web
  • 36. 10/03/2016 36 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce qu’une route ? • Comment définir une route avec Express ?
  • 37. 10/03/2016 37 Formation NodeJS, avancé alphorm.com™© Qu’est-ce qu’une route ? • Une route est un ‘path’ contenu dans une URL : http://example.com/users http://example.com/contats http://example.com/user/eferrari http://example.com/user/eferrari/contacts
  • 38. 10/03/2016 38 Formation NodeJS, avancé alphorm.com™© Comment définir une route avec Express ? app.METHOD(PATH, HANDLER) • On peut définir une route telle quelle : App est l’instance d’Express METHOD est une méthode de requête HTTP PATH est la route définie HANDLER est la fonction qui sera appelée. • Cours : ‘FR_260_02_03/Cours/routes/routes_basiques.js’
  • 39. 10/03/2016 39 Formation NodeJS, avancé alphorm.com™© Comment définir une route avec Express ? • Il est possible de mettre des regex dans le path. • Cours : ‘FR_260_02_03/Cours/routes/routes_regex.js’
  • 40. 10/03/2016 40 Formation NodeJS, avancé alphorm.com™© Comment définir une route avec Express ? • Il est possible de chainer les routes. • Cours : ‘FR_260_02_03/Cours/routes/routes_chainées.js’
  • 41. 10/03/2016 41 Formation NodeJS, avancé alphorm.com™© Comment définir une route avec Express ? • Il est possible de créer des modules pour mieux architecturer notre projet avec la class express.Router. • Cette classe est une instance complétée avec les middlewares et son système de routing. Dans la doc, on peut le retrouver comme appellé une “mini-app”. • Cours : ‘FR_260_02_03/Cours/routes/routes_miniapp.js’
  • 42. 10/03/2016 42 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Ce qu’était une route. Comment définir une route avec Express de plusieurs façons. • Prochaine vidéo : Express : Le gestionnaire de route
  • 43. 10/03/2016 43 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Express : Le gestionnaire des routes Node et le Web
  • 44. 10/03/2016 44 Formation NodeJS, avancé alphorm.com™© Plan • Le gestionnaire des routes • Exemple
  • 45. 10/03/2016 45 Formation NodeJS, avancé alphorm.com™© Le gestionnaire des routes • Avec le gestionnaire, on peut fournir plusieurs callback. • À la fin de chaque fonction, on appelle ‘next()’ • On peut utiliser ce mécanisme pour imposer une précondition sur une route (Authentification, Autorisation …) • Le gestionnaire peut être une fonction, un tableau de fonction, ou les deux.
  • 46. 10/03/2016 46 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_02_04/Cours/gestionnaire_de_route.js’
  • 47. 10/03/2016 47 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comme nous pouvions gérer les conditions à l’appel d’une route • Prochaine vidéo : Express : Les fichiers statiques
  • 48. 10/03/2016 48 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Express : Les fichiers statiques Node et le Web
  • 49. 10/03/2016 49 Formation NodeJS, avancé alphorm.com™© Plan • Comment les fichiers statiques sont gérés ? • Exemple
  • 50. 10/03/2016 50 Formation NodeJS, avancé alphorm.com™© Comment les fichiers statiques sont gérés ? • Pour servir les fichiers statiques tels que les fichiers CSS ou JS, il faut faire appel à ‘express.static’ • Il est possible de définir plusieurs répertoires statiques. • De plus, nous pouvons définir un répertoire statique dans un chemin virtuel. app.use(express.static('public')); app.use(express.static('public')); app.use(express.static('files')); app.use('/static', express.static('public'));
  • 51. 10/03/2016 51 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_02_05/Cours/*’
  • 52. 10/03/2016 52 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment gérer les fichiers statiques • Prochaine vidéo : Express : Ecrire un middleware
  • 53. 10/03/2016 53 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Express : Ecrire un middleware Node et le Web
  • 54. 10/03/2016 54 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce qu’un middleware ? • L’ordre des fonctions • Les différentes possibilités des middlewares
  • 55. 10/03/2016 55 Formation NodeJS, avancé alphorm.com™© Qu’est-ce qu’un middleware ? • Express est une infrastructure web de routage. • Il y a peu de fonctionnalités présentes par défaut. • Une application développée avec Express, n’est ni plus ni moins qu’une succession d’appels de fonctions middleware. • Un middleware est une fonction qui a 3 arguments : req : Classe “Request”, contient les informations de la requête res : Classe “Response”, permet de forger la réponse next : fonction middleware, qui appelle le middleware suivant
  • 56. 10/03/2016 56 Formation NodeJS, avancé alphorm.com™© Qu’est-ce qu’un middleware ? • Les fonctions middleware effectuent les tâches suivantes : Exécuter tout type de code. Apporter des modifications aux objets de demande et de réponse. Terminer le cycle de demande-réponse. Appeler le middleware suivant dans la pile. • Attention : Une fonction middleware doit appeler la fonction next() pour transmettre le contrôle à la fonction middleware suivante. Sinon, la demande restera bloquée. • Cours : ‘FR_260_02_06/Cours/middleware_logger.js’
  • 57. 10/03/2016 57 Formation NodeJS, avancé alphorm.com™© L’ordre des fonctions • L’ordre des fonctions est très important. • Une fois qu’une fonction middleware finit le cycle, toutes les fonctions qui se trouvent après ne seront pas appelées. • Cours : ‘FR_260_02_06/Cours/middleware_logger.js’
  • 58. 10/03/2016 58 Formation NodeJS, avancé alphorm.com™© Les différentes possibilités des middlewares • Il est possible de transmettre stocker des informations dans request ou response. • Par exemple pour : Récupérer plus d'information sur le serveur (header) Ajouter des éléments nécessaires à la réponse Faire un middleware d'authentification (Oauth, ...) Utiliser un moteur de modèle Parse un body d'une requête POST ... • Cours : ‘FR_260_02_06/Cours/middleware_time.js’
  • 59. 10/03/2016 59 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Qu’est ce qu’était un middleware Nous avons pu voir comprendre comment Express fonctionne. Les différentes possibilités offertes par les middlewares • Prochaine vidéo : Express : Les moteurs de template
  • 60. 10/03/2016 60 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Express : Les moteurs de template Node et le Web
  • 61. 10/03/2016 61 Formation NodeJS, avancé alphorm.com™© Plan • Intégrer un moteur de template • Consolidate.js : Intégration dans Express
  • 62. 10/03/2016 62 Formation NodeJS, avancé alphorm.com™© Intégrer un moteur de template • Un moteur de template permet de générer du code HTML à partir d'un code plus simple. • On peut y intégrer des variables et des objets, ce qui permet de rendre le template "dynamique". • Le template est le squelette de la page. • Suivant les données que nous recevons du Model (db, api, etc), le moteur de template va compléter le template et générer de l'HTML. • Avec Express, on utilise beaucoup Jade. • Cours : ‘FR_260_02_06/Cours/express_jade.js’
  • 63. 10/03/2016 63 Formation NodeJS, avancé alphorm.com™© Consolidate.js : Intégration dans Express • Consolidate.js rassemble énormément de moteurs de template : atpl doT.js (website) dust (unmaintained) (website) … • Cours : ‘FR_260_02_06/Cours/express_consolidate.js’
  • 64. 10/03/2016 64 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Qu’elle est l’utilité d’un moteur de template. Comment l’utiliser et comment envoyer des variables au template. • Prochaine vidéo : Side project : ChatWithMe
  • 65. 10/03/2016 65 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Side project : ChatWithMe Node et le Web
  • 66. 10/03/2016 66 Formation NodeJS, avancé alphorm.com™© Plan • Créer le projet avec Express • Créer un projet sur github • Lier le projet sur github • Initialiser NPM • Copier le code
  • 67. 10/03/2016 67 Formation NodeJS, avancé alphorm.com™© Hello word Let’s code
  • 68. 10/03/2016 68 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Nous avons une bonne base pour commencer le développement de notre application ! • Prochain chapitre : L’asynchrone en détail
  • 69. 10/03/2016 69 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Callback Hell & Pyramid of Doom L’asynchrone en détail
  • 70. 10/03/2016 70 Formation NodeJS, avancé alphorm.com™© Plan • Pyramid of doom • Callback hell • Comment éviter les pièges ?
  • 71. 10/03/2016 71 Formation NodeJS, avancé alphorm.com™© Pyramid of doom • La pyramide de la malediction • C’est le fait d’enchainer les blocks en cascade
  • 72. 10/03/2016 72 Formation NodeJS, avancé alphorm.com™© Callback hell • En JavaScript, quand une tâche est faite, la callback définie est appelée • On peut rapidement arriver à un code comme ci-dessous:
  • 73. 10/03/2016 73 Formation NodeJS, avancé alphorm.com™© Comment éviter les pièges ? • Nommer les fonctions anonymes Le code est plus simple à lire Quand une exception arrive, les fonctions dans la stacktrace seront nommées • Garder le code peu profond • Modulariser ! Node permet de créer des modules très facilement, profitez s'en ! Issac Schlueter "Ecrire de petits modules qui font qu'une seule chose, puis les assembler dans d'autres modules qui feront de plus grande chose. Vous ne pouvez pas entrer dans l'enfer rappel si vous n'y allez pas."
  • 74. 10/03/2016 74 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Exercices: ‘FR_260_03_00/Exercice/code_sale.js’ Corrigé: ‘FR_260_03_00/Exercice/code_sale_corrigé.js’
  • 75. 10/03/2016 75 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Quelles sont les plus gros pièges de JavaScript et de NodeJS • Prochaine vidéo : Async : Cours
  • 76. 10/03/2016 76 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Async : Cours L’asynchrone en détail
  • 77. 10/03/2016 77 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce que Async ? • Exemples
  • 78. 10/03/2016 78 Formation NodeJS, avancé alphorm.com™© Qu’est-ce que async ? • API : https://github.com/caolan/async • Async est un module communautaire qui fournit de simple et de puissantes fonctions pour travailler avec les fonctions JS asynchrones. • Async gère 3 categories : Les collections Le control Flow Utils
  • 79. 10/03/2016 79 Formation NodeJS, avancé alphorm.com™© Exemples Cours: ‘FR_260_03_01/Cours/’
  • 80. 10/03/2016 80 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours: ‘FR_260_03_00/Cours/code_sale.js’
  • 81. 10/03/2016 81 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Les principaux usages de async • Filter • Map • Parallel • Serie • waterfall • Prochaine vidéo : Async : Exercices
  • 82. 10/03/2016 82 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Async : Exercices Partie 1 L’asynchrone en détail
  • 83. 10/03/2016 83 Formation NodeJS, avancé alphorm.com™© Plan • Async-you Waterfall Series objects Each Map
  • 84. 10/03/2016 84 Formation NodeJS, avancé alphorm.com™© Async-you • Async-you est un programme intéractif qui corrigera automatiquement vos exercices. • Tous les exercices sont traduits en francais. • Je commenterai moi-même le code corrigé • Pour installer : $> npm install –g async-you • Pour lancer : $> async-you • Changer la langue en Francais, si vous le désirez
  • 85. 10/03/2016 85 Formation NodeJS, avancé alphorm.com™© Async-you Let’s code Exercices: ‘FR_260_03_02/Exercices/’
  • 86. 10/03/2016 86 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Les principaux usages de async • Waterfall • Serie • Each • Map • Prochaine vidéo : Async : Exercices Partie 2
  • 87. 10/03/2016 87 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Async : Exercices Partie 2 L’asynchrone en détail
  • 88. 10/03/2016 88 Formation NodeJS, avancé alphorm.com™© Plan • Async-you Times Reduce Whilst
  • 89. 10/03/2016 89 Formation NodeJS, avancé alphorm.com™© Async-you Let’s code Exercices: ‘FR_260_03_02/Exercices/’
  • 90. 10/03/2016 90 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Les principaux usages de async • Times • Reduce • whilst • Prochaine vidéo : Les promesses avec Q: Les fondamentaux
  • 91. 10/03/2016 91 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Les promesses avec Q : Les fondamentaux L’asynchrone en détail
  • 92. 10/03/2016 92 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce que sont les promesses? • Module Q • Installation de Q • Faire une promesse basée sur une tâche • Chainer les actions
  • 93. 10/03/2016 93 Formation NodeJS, avancé alphorm.com™© Qu’est-ce que “Promise” ? • Promise en anglais • Les promises fournissent une alternative aux callbacks lorsqu’on traite un code asynchrone. • Une promesse est une abstraction pour la programmation asynchrone. • C’est un objet qui proxifie une valeur de retour ou une exception renvoyée par une fonction qui doit faire un traitement asynchrone. • Malheureusement, la compréhension des promesses n’est pas facile.
  • 94. 10/03/2016 94 Formation NodeJS, avancé alphorm.com™© Module Q • Il existe plusieurs interprétations des promesses. • Les promesses sont intégrées dans ECMAscript6 • API : https://github.com/kriskowal/q • Cours: ‘FR_260_03_03/Cours/introduction.js’
  • 95. 10/03/2016 95 Formation NodeJS, avancé alphorm.com™© Installation de Q • Avec nodeJS $> npm install q • Coté client, avec un navigateur web <script src="q.min.js"></script>
  • 96. 10/03/2016 96 Formation NodeJS, avancé alphorm.com™© Faire une promesse basée sur une tache Let’s code Cours: ‘FR_260_03_03/Cours/premiere_promesse.js’
  • 97. 10/03/2016 97 Formation NodeJS, avancé alphorm.com™© Chainer les actions Let’s code Cours: ‘FR_260_03_03/Cours/chainer_les_actions.js’
  • 98. 10/03/2016 98 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Les principaux usages des promesses avec Q Comment créer une promesse Comment chainer plusieurs actions • Prochaine vidéo : Les promesses avec Q : les conditions et les boucles
  • 99. 10/03/2016 99 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Les promesses avec Q : Les conditions et les boucles L’asynchrone en détail
  • 100. 10/03/2016 100 Formation NodeJS, avancé alphorm.com™© Plan • Utilisation de condition dans une promesse • Utilisation de boucle avec une promesse
  • 101. 10/03/2016 101 Formation NodeJS, avancé alphorm.com™© Utilisation de condition dans une promesse Let’s code Cours: ‘FR_260_03_05/Cours/condition.js’
  • 102. 10/03/2016 102 Formation NodeJS, avancé alphorm.com™© Utilisation d’une boucle avec une promesse Let’s code Cours: ‘FR_260_03_05/Cours/boucle.js’
  • 103. 10/03/2016 103 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment gérer les conditions et les boucles • Prochaine vidéo : Les promesses avec Q : la gestions des erreurs
  • 104. 10/03/2016 104 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Les promesses avec Q : La gestion des erreurs et les accès directs L’asynchrone en détail
  • 105. 10/03/2016 105 Formation NodeJS, avancé alphorm.com™© Plan • La gestion des erreurs avec Q • Gestion des objets avec les méthodes
  • 106. 10/03/2016 106 Formation NodeJS, avancé alphorm.com™© La gestion des erreurs avec Q • Q inclut une gestion “standard” des erreurs • La fonction then peut prendre deux arguments, le second argument est une fonction anonyme qui sera appelée si une erreur intervient • De plus avec deferred, on peut appeler .reject(arg en erreur). • En plus des .then(), on peut ajouter un .fail() qui récupérera les erreurs non traitées. • Cours: ‘FR_260_03_06/Cours/erreurs.js’
  • 107. 10/03/2016 107 Formation NodeJS, avancé alphorm.com™© Gestion des objets avec les méthodes • Il est possible d'utiliser des méthodes de Q qui vont vous permettre de manipuler les données lors du flow des promesses. • C'est un gain de temps • Permettra de rendre votre code encore plus clair et concis. • Cours: ‘FR_260_03_06/Cours/manipulation_object.js’
  • 108. 10/03/2016 108 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment gérer les erreurs Comment accéder en direct à certaines fonctions de Q • Prochaine vidéo : Les promesses avec Q : Flow, Timers et I/O
  • 109. 10/03/2016 109 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Les promesses avec Q : Flow, Timers et I/O L’asynchrone en détail
  • 110. 10/03/2016 110 Formation NodeJS, avancé alphorm.com™© Plan • Composer un flow • Les timers • Les modules I/O
  • 111. 10/03/2016 111 Formation NodeJS, avancé alphorm.com™© Composer un flow • Les promesses de base supportent seulement un seul flow à la fois. Q permet de gérer plusieurs flow. • Imaginons, nous avons deux flow : Un qui fait une requête Un qui log la tâche • Grâce à Q, il est possible de regrouper plusieurs promesses distinctes sous une "grosse" promesse. • Si un des deux flow a une erreur, l'autre tâche est quand même exécutée • Si une des sous-promesses est en erreur, toutes les promesses sont arrêtées et mises en "fail". • Cours: ‘FR_260_03_07/Cours/composer_un_flow.js’
  • 112. 10/03/2016 112 Formation NodeJS, avancé alphorm.com™© Les timers • Les promesses ont deux systèmes de contrôle de temps : .delay(ms) .timeout(ms) • Cours: ‘FR_260_03_07/Cours/timers.js’
  • 113. 10/03/2016 113 Formation NodeJS, avancé alphorm.com™© Les modules I/O • Q nous propose des fonctions qui permettent de faire appel à des fonctions des modules I/O : Q.nfapply(func, args) Q.nfcall(func, arg1, arg2, ...) Q.nfbind(func, arg1, arg2,...) Q.npost(obj, name, args) Q.nsend(obj, name, arg1, arg2, ...) • Ne fonctionne pas avec le module HTTP • Cours: ‘FR_260_03_07/Cours/module_io.js’
  • 114. 10/03/2016 114 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment composer un flow complex Comment utiliser les timers Comment utiliser les modules I/O • Prochaine vidéo : Les promesses : Exercices Partie 1
  • 115. 10/03/2016 115 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Les promesses : Exercices Partie 1 L’asynchrone en détail
  • 116. 10/03/2016 116 Formation NodeJS, avancé alphorm.com™© Plan • promise-it-wont-hurt Accomplir une promesse Rejeter une promesse Rejet ou ne pas rejeter Toujours asynchrones Valeurs et promesses Lever une erreur
  • 117. 10/03/2016 117 Formation NodeJS, avancé alphorm.com™© promise-it-wont-hurt • Promise-it-wont-hurt est un programme intéractif qui corrigera automatiquement vos exercices. • Tous les exercices sont traduits en français. • Je commenterai moi-même le code corrigé • Pour installer : $> npm install –g promise-it-wont-hurt • Pour lancer : $> promise-it-wont-hurt • Changer la langue en Français, si vous le désirez
  • 118. 10/03/2016 118 Formation NodeJS, avancé alphorm.com™© promise-it-wont-hurt Let’s code Exercices: ‘FR_260_03_08/Exercices/’
  • 119. 10/03/2016 119 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons revu les principaux usages des promises. • Prochain chapitre : Les promesses : Exercices Partie 2
  • 120. 10/03/2016 120 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Les promesses : Exercices Partie 2 L’asynchrone en détail
  • 121. 10/03/2016 121 Formation NodeJS, avancé alphorm.com™© Plan • promise-it-wont-hurt Utiliser qfcall Une règle importante Promesses multiples Récurérer un JSON Faire plus de boulot
  • 122. 10/03/2016 122 Formation NodeJS, avancé alphorm.com™© promise-it-wont-hurt Let’s code Exercices: ‘FR_260_03_09/Exercices/’
  • 123. 10/03/2016 123 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons revu les principaux usages des promises. • Prochain chapitre : Communication temps réel
  • 124. 10/03/2016 124 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Socket.io Communication temps réel
  • 125. 10/03/2016 125 Formation NodeJS, avancé alphorm.com™© Plan • Un peu d'histoire • WebSocket
  • 126. 10/03/2016 126 Formation NodeJS, avancé alphorm.com™© Un peu d'histoire • Avant, pour mettre à jour une information sur une page web : • Tous les 5 minutes, nous mettons à jour nos données. • C'est aussi efficace que le protocole "Transmission de datagramme IP par pigeons" • http://www.rfc-editor.org/rfc/rfc1149.txt
  • 127. 10/03/2016 127 Formation NodeJS, avancé alphorm.com™© Un peu d'histoire • Vu qu'on veut mettre à jour souvent, on baisse le rafraichissement • En créant autant de requêtes, de nouveaux problèmes apparaissent : Si la requête HTTP met plus de 100 millisecondes, deux requêtes sont lancées parallèlement. Quand le serveur n'a pas de nouvelle donnée, ces requêtes sont toutes simplement de la consommation de ressource inutile.
  • 128. 10/03/2016 3 Formation NodeJS, avancé alphorm.com™© Présentation du formateur Edouard FERRARI • contact@ferrari.wf • 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
  • 129. 10/03/2016 129 Formation NodeJS, avancé alphorm.com™© WebScocket • Les WebSocket permettent de fournir un mécanisme pour les navigateurs qui ont besoin de communiquer Avec un navigateur Des deux sens (upload, download) et reste ouvert après avoir reçu les données • Il est ajouté à partir du protocole HTTP/1.1 • Malgré ça, il reste deux problèmes majeurs : Le serveur de destination et tous les serveurs en relais (Cache, Reverse proxy, load balancer, ...) doivent savoir comment gérer ce protocole. Beaucoup d'ancien navigateur ne supporte pas ce protocole.
  • 130. 10/03/2016 130 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : A partir de quelle problèmatique les websocket et socket.io ont été créés Une rapide overview du protocole websocket. • Prochaine vidéo : Intégration dans Express
  • 131. 10/03/2016 131 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Intégration à Express Communication temps réel
  • 132. 10/03/2016 132 Formation NodeJS, avancé alphorm.com™© Plan • Ajouter le code côté serveur • Ajouter le code côté client • Side project : ChatWithMe
  • 133. 10/03/2016 133 Formation NodeJS, avancé alphorm.com™© Cours Ajouter le code côté serveur Cours : ‘FR_260_04_01/Cours/’
  • 134. 10/03/2016 134 Formation NodeJS, avancé alphorm.com™© Cours Ajouter le code côté client Cours : ‘FR_260_04_01/Cours/’
  • 135. 10/03/2016 135 Formation NodeJS, avancé alphorm.com™© Side project: ChatWithMe • Intégrer socket.io dans ChatWithMe • Side project : ‘ChatWithMe/’
  • 136. 10/03/2016 136 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu comment préparer un projet pour socket.io • Prochaine vidéo : Projet : ChatWithMe, le code backend
  • 137. 10/03/2016 137 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Side Project : ChatWithMe, le code Backend Communication temps réel
  • 138. 10/03/2016 138 Formation NodeJS, avancé alphorm.com™© Plan • Arborescence des objets et des Managers • Liste des requêtes vers le backend • Let’s code !
  • 139. 10/03/2016 139 Formation NodeJS, avancé alphorm.com™© Arborescence des objets et des Managers userManager User RoomManager room Message
  • 140. 10/03/2016 140 Formation NodeJS, avancé alphorm.com™© Liste des requêtes backend • Liste des requêtes backend • JoinRoom : Le user joins une room. • QuitRoom : Le user quitte la room. • SetName : Le user change de nom • NewMessage : Le user écrit un nouveau message dans une room
  • 141. 10/03/2016 141 Formation NodeJS, avancé alphorm.com™© Liste des requêtes backend • Quand l’utilisateur se connecte au serveur : 1. Le serveur transmet la liste des rooms à l’utilisateur. • Quand l’utilisateur rejoint une room 1. La room avertit tous ses utilisateurs qu’un nouvel utilisateur est arrivé. 2. La room transmet tous ses informations au nouvel utilisateur. • Quand un utilisateur écrit un message dans une room : 1. L’information est reçue dans l’objet user. 2. Transmets l’information à l’objet room. 3. L’objet room, transmet l’information à tous les utilisateurs.
  • 142. 10/03/2016 142 Formation NodeJS, avancé alphorm.com™© ChatWithMe, le code Backend Let’s code Side project: ‘ChatWithMe/’
  • 143. 10/03/2016 143 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons développé le code backend pour les requêtes suivantes : JoinRoom QuitRoom SetName NewMessage • Prochaine vidéo : Side Project : ChatWithMe, le code frontend
  • 144. 10/03/2016 144 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Side Project : ChatWithMe, le code Frontend Communication temps réel
  • 145. 10/03/2016 145 Formation NodeJS, avancé alphorm.com™© Plan • Arborescence des fichiers • Liste des requêtes vers le frontend • Let’s code !
  • 146. 10/03/2016 146 Formation NodeJS, avancé alphorm.com™© Arborescence des objets et des Managers Realtime.js Room
  • 147. 10/03/2016 147 Formation NodeJS, avancé alphorm.com™© Liste des requêtes backend • Liste des requêtes frontend : roomList : Une fois connecté, le serveur envoie la liste des rooms disponibles. joinRoom : Une fois que nous avons rejoint une room, on reçoit toutes les infos nécessaires à créer une nouvelle room. roomNewUser : Un nouveau user rentre dans une room. roomUsers : Si quelqu’un rentre ou sort de la room, on est averti par cette requête. roomMessages : Pas implémenté. roomNewMessage : Si un user écrit un message, on est averti par cette requête.
  • 148. 10/03/2016 148 Formation NodeJS, avancé alphorm.com™© ChatWithMe, le code Front Let’s code Side project: ‘ChatWithMe/’
  • 149. 10/03/2016 149 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons développé le code frontend pour les requêtes suivantes : joinRoom roomList roomUsers roomMessages roomNewMessage roomNewUser • Prochain chapitre : Liaison avec la persistance des données
  • 150. 10/03/2016 150 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Intégration avec une base de données relationnelle (Mysql) Liaison avec la persistance des données
  • 151. 10/03/2016 151 Formation NodeJS, avancé alphorm.com™© Plan • Introduction à Mysql • Mysql avec Cloud9 • Let’s code
  • 152. 10/03/2016 152 Formation NodeJS, avancé alphorm.com™© Introduction à Mysql • MySQL est un système de gestion de bases de données relationnelles (SGBDR). • Formation complète sur Alphorm : http://www.alphorm.com/tutoriel/formation-en-ligne-mysql-1z0-883 • Savoir comment utiliser Node.JS et Mysql est plus que nécessaire. • Mysql est une base de données la plus utilisée dans le monde et très performante. • Tous les langages ont développé un driver pour interagir avec Mysql.
  • 153. 10/03/2016 153 Formation NodeJS, avancé alphorm.com™© Mysql avec Cloud9 $> mysql-ctl start $> mysql-ctl stop $> mysql-ctl cli • Informations : Hostname – process.env.IP Port - 3306 (Port par défaut de Mysql) User – process.env.C9_USER Password - `` (Pas de mot de passe) Database - c9 (Le nom de la base de données)
  • 154. 10/03/2016 154 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_00/Cours/’
  • 155. 10/03/2016 155 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment utiliser mysql avec NodeJs • Prochaine vidéo : Sequelize, l’introduction
  • 156. 10/03/2016 156 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Sequelize, l’introduction Liaison avec la persistance des données
  • 157. 10/03/2016 157 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est ce qu’un ORM ? • Sequelize • Let’s code
  • 158. 10/03/2016 158 Formation NodeJS, avancé alphorm.com™© Qu’est-ce qu’un ORM • Un mapping objet-relationnel (en anglais object-relational mapping ou ORM) • C’est une technique de programmation informatique qui crée l'illusion d'une base de données orientée objet à partir d'une base de données relationnelle. • L’ORM définit des correspondances entre cette base de données et les objets du langage utilisé. • On pourrait le désigner par : « correspondance entre monde objet et monde relationnel »
  • 159. 10/03/2016 159 Formation NodeJS, avancé alphorm.com™© Sequelize • Sequelize est un ORM basé sur les promesses pour NodeJS • http://docs.sequelizejs.com/en/latest/ • Il supporte les bases de données suivantes : PostgreSQL MySQL MariaDB SQLite MSSQL • Et des fonctionnalités de transaction, relations, read replication, …
  • 160. 10/03/2016 160 Formation NodeJS, avancé alphorm.com™© Sequelize • La première chose à faire est de définir les modèles • Sequelize, nous permet de définir les champs que nous utiliserons. http://docs.sequelizejs.com/en/latest/docs/models-definition/
  • 161. 10/03/2016 161 Formation NodeJS, avancé alphorm.com™© Sequelize • De plus, Sequelize fonctionne avec les promises. • Cela ne fonctionne pas ! • Ce qu’il faut faire :
  • 162. 10/03/2016 162 Formation NodeJS, avancé alphorm.com™© Let’s code • Maintenant, nous allons voir les grandes utilisations de Sequelize: La configuration La création de tables L’insertion de données Comment retrouver ses données • Cours : ‘FR_260_05_01/Cours/’
  • 163. 10/03/2016 163 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment utiliser sequelize Comment éviter les pièges Et partir sur de bonne base • Prochaine vidéo : Sequelize, les associations
  • 164. 10/03/2016 164 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Sequelize, les associations Liaison avec la persistance des données
  • 165. 10/03/2016 165 Formation NodeJS, avancé alphorm.com™© Plan • Les différents types de liaison • Let’s code
  • 166. 10/03/2016 166 Formation NodeJS, avancé alphorm.com™© Les différents types de liaison • Avec les ORMs, il existe plusieurs types de liaison. • Les One-to-One BelongsTo: “Appartient à”, un Post appartient à un User. HasOne: “à un” object HasMany: “à plusieurs” object, un User peut avoir plusieurs Post. … • http://docs.sequelizejs.com/en/latest/docs/associations/
  • 167. 10/03/2016 167 Formation NodeJS, avancé alphorm.com™© Les différents types de liaison • Les associations vont nous permettre de lier les données • Par exemples, deux tables : Users (id, firstname, lastname) Users-Posts (id, userId, subject, content)
  • 168. 10/03/2016 168 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_02/Cours/association.js’
  • 169. 10/03/2016 169 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment faire des associations de table • Prochaine vidéo : Interaction avec une base de données NoSQL : Redis
  • 170. 10/03/2016 170 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Interaction avec une base de données NoSQL : Redis Liaison avec la persistance des données
  • 171. 10/03/2016 171 Formation NodeJS, avancé alphorm.com™© Plan • Introduction à Redis • Redis avec Cloud9 • Let’s code
  • 172. 10/03/2016 172 Formation NodeJS, avancé alphorm.com™© Introduction à Redis • Redis (de l'anglais REmote DIctionary Server qui peut être traduit par « serveur de dictionnaire distant » et jeu de mots avec Redistribute). • C’est un système de gestion de bases de données clef-valeur scalable, très hautes performances, écrit avec le langage de programmation C. • Il fait partie du mouvement NoSQL et vise à fournir les performances les plus élevées possibles. http://redis.io/commands
  • 173. 10/03/2016 173 Formation NodeJS, avancé alphorm.com™© Redis avec Cloud9 • Pour lancer le serveur $> sudo service redis-server start • Pour se connecter au serveur $> redis-cli
  • 174. 10/03/2016 174 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_03/Cours/’
  • 175. 10/03/2016 175 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment utiliser redis avec NodeJs • Prochaine vidéo : Interaction avec une base de données NoSQL : MongoDB, l’introduction
  • 176. 10/03/2016 176 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Intégration avec une base de données NoSQL : MongoDB, l’introduction Liaison avec la persistance des données
  • 177. 10/03/2016 177 Formation NodeJS, avancé alphorm.com™© Plan • Introduction à MongoDB • MongoDB avec Cloud9 • CRUD
  • 178. 10/03/2016 178 Formation NodeJS, avancé alphorm.com™© Introduction à MongoDB • MongoDB de l'anglais humongous qui peut être traduit par « énorme » • C’est un système de gestion de bases de données : Orientée documents. Répartissable sur un nombre quelconque d'ordinateurs. Ne nécessitant pas de schémas prédéfinis des données. • Il est écrit en C++. • Il fait partie du mouvement NoSQL.
  • 179. 10/03/2016 179 Formation NodeJS, avancé alphorm.com™© MongoDB avec Cloud9 • Pour lancer le serveur $> mongod --nojournal • Pour se connecter au serveur $> mongo
  • 180. 10/03/2016 180 Formation NodeJS, avancé alphorm.com™© CRUD • Nous allons voir les principales utilisations de mongodb avec mongoose. Create : ‘FR_260_05_05/Cours/create.js’ Read: ‘FR_260_05_05/Cours/read.js’ Update: ‘FR_260_05_05/Cours/update.js’ Delete: ‘FR_260_05_05/Cours/delete.js
  • 181. 10/03/2016 181 Formation NodeJS, avancé alphorm.com™© Pour aller plus loi • Une formation complète sur Mongodb sur Alphorm : http://www.alphorm.com/tutoriel/formation-en-ligne-mongodb- administration
  • 182. 10/03/2016 182 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment utiliser MongoDB avec mongoose. • Prochaine vidéo : Interaction avec une base de données NoSQL : MongoDB, les associations
  • 183. 10/03/2016 183 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Intégration avec une base de données NoSQL : MongoDB, les associations Liaison avec la persistance des données
  • 184. 10/03/2016 184 Formation NodeJS, avancé alphorm.com™© Plan • Les associations • Let’s code
  • 185. 10/03/2016 185 Formation NodeJS, avancé alphorm.com™© Les associations • De la même façon qu’avec MySQL, nous allons lier les users et les posts.
  • 186. 10/03/2016 186 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_05/Cours/associate.js’
  • 187. 10/03/2016 187 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment faire des associations de documents avec MongoDb • Prochaine vidéo Intégration de MySQL à ChatWithMe
  • 188. 10/03/2016 188 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Intégration de MySQL à ChatWithMe Liaison avec la persistance des données
  • 189. 10/03/2016 189 Formation NodeJS, avancé alphorm.com™© Plan •Let’s code
  • 190. 10/03/2016 190 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Side project: ‘ChatWithMe’
  • 191. 10/03/2016 191 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons intégré Mysql à ChatWithMe • Prochaine vidéo Intégration de Sequelize à ChatWithMe
  • 192. 10/03/2016 192 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Intégration de Sequelize à ChatWithMe Liaison avec la persistance des données
  • 193. 10/03/2016 193 Formation NodeJS, avancé alphorm.com™© Plan •Let’s code
  • 194. 10/03/2016 194 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Side project: ‘ChatWithMe’
  • 195. 10/03/2016 195 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons intégré Sequelize à ChatWithMe • Prochaine vidéo Intégration de MongoDB à ChatWithMe
  • 196. 10/03/2016 196 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Intégration de MongoDB à ChatWithMe Liaison avec la persistance des données
  • 197. 10/03/2016 197 Formation NodeJS, avancé alphorm.com™© Plan •Let’s code
  • 198. 10/03/2016 198 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Side project: ‘ChatWithMe’
  • 199. 10/03/2016 199 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons intégré Mysql à ChatWithMe • Prochaine chapitre Intégration de Sequelize à ChatWithMe
  • 200. 10/03/2016 200 Formation NodeJS, avancé alphorm.com™© PM2, le monitoring Bonus Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf
  • 201. 10/03/2016 201 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est ce que PM2 ? • La gestion d’un processus • Les actions sur le processus • Les logs • Lancer un processus avec des arguments • Les limites
  • 202. 10/03/2016 202 Formation NodeJS, avancé alphorm.com™© Qu’est ce que PM2 ? • PM2 est un gestionnaire de processus de production pour les applications Node.js avec un load balancer intégré. • Il permet de garder les applications vivantes et les redémarrera si un problème intervient. • Il permet aussi de recharger le code de l’application sans couper les files de description (Reload à chaud) • https://github.com/Unitech/pm2 • Installation : $> npm install –g pm2
  • 203. 10/03/2016 203 Formation NodeJS, avancé alphorm.com™© La gestion d’un processus • Démarrer le processus : $> pm2 start bin/www $> pm2 start bin/www --name ChatWithMe • PM2 permet de démarer le processus en cluster mode, cela permettra de profiter de l'ensemble des processus de la machine. $> pm2 start bin/www -i 0 # démarre avec autant de processus que de processeur. • Pour lister les processus $> pm2 list
  • 204. 10/03/2016 204 Formation NodeJS, avancé alphorm.com™© La gestion d’un processus • Afficher plus d'informations sur un processus en particulier $> pm2 describe 0 • Monitorer les process lancés $> pm2 monit • Retire un processus de la liste $> pm2 delete 0 $> pm2 delete all
  • 205. 10/03/2016 205 Formation NodeJS, avancé alphorm.com™© Les actions sur le processus • Différente actions : $> pm2 stop all # Stop tous les processus $> pm2 restart all # Restart tous les processus $> pm2 reload all # Redémarrer un processus sans aucun downtime $> pm2 gracefulReload all # Stop un processus, puis le relance $> pm2 stop 0 # Stop un processus spécifique $> pm2 restart 0 # Restart un processus spécifique
  • 206. 10/03/2016 206 Formation NodeJS, avancé alphorm.com™© Les logs • Gérer les logs $> pm2 logs [--raw] # Affiche tous les logs $> pm2 flush # Vide tous les logs
  • 207. 10/03/2016 207 Formation NodeJS, avancé alphorm.com™© Lancer une processus avec des arguments • Démarrer un processus avec des arguments $> pm2 start app.js -- -a 23 # Passe l'argument '-a 23' à app.js • Spécifier les logs explicitement $> pm2 start app.js -e err.log -o out.log
  • 208. 10/03/2016 208 Formation NodeJS, avancé alphorm.com™© Les limites • Le module cluster de NodeJS ne permet pas de faire fonctionner socket.io • https://github.com/elad/node-cluster-socket.io • Vu que PM2 utilise le module natif pour les clusters, PM2 ne supporte pas non plus les socket.io.
  • 209. 10/03/2016 209 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Un projet de monitoring de processus NodeJS pour une mise en production ! Lancer en cluster un processus Gérer les logs • Prochaine vidéo : Keymetrics, la supervision
  • 210. 10/03/2016 210 Formation NodeJS, avancé alphorm.com™© Keymetrics, la supervision Bonus Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf
  • 211. 10/03/2016 211 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce que Keymetrics ? • Inscription • Lien avec PM2 • Ajout de sondes
  • 212. 10/03/2016 212 Formation NodeJS, avancé alphorm.com™© Qu’est-ce que Keymetrics ? • Keymetrics permet d'afficher des statistiques remontées par pm2 https://keymetrics.io/
  • 213. 10/03/2016 213 Formation NodeJS, avancé alphorm.com™© Inscription • Inscription : https://app.keymetrics.io/#/login
  • 214. 10/03/2016 214 Formation NodeJS, avancé alphorm.com™© Lien avec PM2 • Pour lier Keymetrics avec un PM2 $> pm2 link xxxxxxxxxxx xxxxxxxxxx [hostname]
  • 215. 10/03/2016 215 Formation NodeJS, avancé alphorm.com™© Ajouter des sondes • C’est le module pmx qui permet d’ajouter des sondes : npm install –save pmx • Faire un wrapper (singleton) pour initialiser le module : • Il existe 4 types de sondes : « Simple metics » : Remonte un nombre « Counter » : Incrémente et décrémente un nombre « Meter » : Remonte un nombre sur le temps, ex Nombre de requêtes par seconde. « Histogram » : Garde un réservoir de valeur sur les 5 dernières minutes
  • 216. 10/03/2016 216 Formation NodeJS, avancé alphorm.com™© Exemple Ajout de nouvelle sonde Side project : ‘ChatWithMe’
  • 217. 10/03/2016 217 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert • Dans cette vidéo, nous avons vu : Comment superviser un projet NodeJS Comment remonter certaines informations métier • Prochain chapitre : La conclusion !
  • 218. 10/03/2016 218 Formation NodeJS, avancé alphorm.com™© Site : http://www.alphorm.com Blog : http://blog.alphorm.com Édouard FERRARI Formateur et Consultant indépendant Contact : contact@ferrari.wf Conclusion
  • 219. 10/03/2016 219 Formation NodeJS, avancé alphorm.com™© Ce qu’on a couvert 1. Comment installer et mettre en place un Express 1. Système de route 2. Gestion des fichiers statiques 3. Comment ajouter nos propres middlewares 4. Comment utiliser un moteur de template 2. Deux différentes méthodes de développement asynchrone: 1. Async 2. Les promesses avec Q 3. La communication en temps raille avec les clients (front-end) grâce à Socket.io 1. Comment sauvegarder des données en couvrant les bases de donnée suivante : 1. Mysql 2. MariaDB 3. SQLite 4. Postgres 5. MSSql 6. Redis 7. MongoDB 2. Développer un projet NodeJS en MVC. 3. Comment monitorer et superviser le projet avec PM2 et Keymetrics
  • 220. 10/03/2016 220 Formation NodeJS, avancé alphorm.com™© Avez-vous des Questions / Remarques / Commentaires ?
  • 221. 10/03/2016 221 Formation NodeJS, avancé alphorm.com™© A bientôt ☺ Keep in touch ! E-mail : edouard@ferrari.wf Linkedin : https://fr.linkedin.com/in/edouardferrari Twitter : https://twitter.com/edouard_ferrari Alphorm : http://www.alphorm.com/formateur/edouard-ferrari