Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alphorm.com Support de la formation NodeJS , avancé

10,486 views

Published on

Formation complète ici :
http://www.alphorm.com/tutoriel/formation-en-ligne-nodejs-avance

Suite à la première formation Node.JS, les fondamentaux, votre formateur Node.JS Édouard FERRARI vous prépare cette formation Node.JS, Avancé pour aller plus loin.
Cette formation Node.JS, Avancé vous donne toutes les clés pour bien connaitre et éviter les principaux pièges de Node.JS, tout en suivant les bonnes pratiques, vous serez capable de mener à bien de gros projet professionnels.
Durant cette formation Node.JS, Avancé, vous allez apprendre à développer des applications réactives et performantes avec Node.js. Vous mettrez en œuvre les concepts de programmation événementielle et asynchrone, de modularité avec des modules et Frameworks très puissants.
À travers cette formation Node.JS, Avancé, vous allez pouvoir développer en quelques heures une base solide d'une application web de chat en ligne ressemblant à WhatsUp. Vous allez apprendre comment interconnecter plusieurs utilisateurs et faire transiter les informations en temps réel d'un utilisateur à l'autre. Cette application sera développée en suivant la norme MVC (Model, View, Controller) et avec une abstraction de données pour pouvoir gérer MySQL, MariaDB, SQLite, Posgres, MS SQL et MongoDB.
À la fin de la formation Node.JS, Avancé, vous devez être capable de répondre à toutes les exigences que le monde du travail vous demande.

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ♥♥♥ http://bit.ly/2Q98JRS ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ♥♥♥ http://bit.ly/2Q98JRS ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/qURD } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/qURD } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/qURD } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/qURD } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/qURD } ......................................................................................................................... Download doc Ebook here { https://soo.gd/qURD } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Alphorm.com Support de la formation NodeJS , avancé

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 13. 10/03/2016 13 Formation NodeJS, avancé alphorm.com™© Plan • Formation • Side project : ChatWithMe
  14. 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. 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. 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. 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. 18. 10/03/2016 18 Formation NodeJS, avancé alphorm.com™© Plan • Rappel • Une requête HTTP (partie client) • Un serveur HTTP (partie serveur)
  19. 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. 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. 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. 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. 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. 24. 10/03/2016 24 Formation NodeJS, avancé alphorm.com™© Plan • Le module Request • Les requêtes HTTP(s)
  25. 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. 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. 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. 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. 29. 10/03/2016 29 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce qu’Express ? • Installation • Hello word • le ‘Generator’
  30. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 44. 10/03/2016 44 Formation NodeJS, avancé alphorm.com™© Plan • Le gestionnaire des routes • Exemple
  45. 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. 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. 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. 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. 49. 10/03/2016 49 Formation NodeJS, avancé alphorm.com™© Plan • Comment les fichiers statiques sont gérés ? • Exemple
  50. 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. 51. 10/03/2016 51 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_02_05/Cours/*’
  52. 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. 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. 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. 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. 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. 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. 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. 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. 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. 61. 10/03/2016 61 Formation NodeJS, avancé alphorm.com™© Plan • Intégrer un moteur de template • Consolidate.js : Intégration dans Express
  62. 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. 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. 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. 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. 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. 67. 10/03/2016 67 Formation NodeJS, avancé alphorm.com™© Hello word Let’s code
  68. 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. 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. 70. 10/03/2016 70 Formation NodeJS, avancé alphorm.com™© Plan • Pyramid of doom • Callback hell • Comment éviter les pièges ?
  71. 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. 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. 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. 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. 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. 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. 77. 10/03/2016 77 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce que Async ? • Exemples
  78. 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. 79. 10/03/2016 79 Formation NodeJS, avancé alphorm.com™© Exemples Cours: ‘FR_260_03_01/Cours/’
  80. 80. 10/03/2016 80 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours: ‘FR_260_03_00/Cours/code_sale.js’
  81. 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. 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. 83. 10/03/2016 83 Formation NodeJS, avancé alphorm.com™© Plan • Async-you Waterfall Series objects Each Map
  84. 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. 85. 10/03/2016 85 Formation NodeJS, avancé alphorm.com™© Async-you Let’s code Exercices: ‘FR_260_03_02/Exercices/’
  86. 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. 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. 88. 10/03/2016 88 Formation NodeJS, avancé alphorm.com™© Plan • Async-you Times Reduce Whilst
  89. 89. 10/03/2016 89 Formation NodeJS, avancé alphorm.com™© Async-you Let’s code Exercices: ‘FR_260_03_02/Exercices/’
  90. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 100. 10/03/2016 100 Formation NodeJS, avancé alphorm.com™© Plan • Utilisation de condition dans une promesse • Utilisation de boucle avec une promesse
  101. 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. 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. 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. 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. 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. 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. 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. 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. 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. 110. 10/03/2016 110 Formation NodeJS, avancé alphorm.com™© Plan • Composer un flow • Les timers • Les modules I/O
  111. 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. 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. 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. 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. 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. 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. 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. 118. 10/03/2016 118 Formation NodeJS, avancé alphorm.com™© promise-it-wont-hurt Let’s code Exercices: ‘FR_260_03_08/Exercices/’
  119. 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. 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. 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. 122. 10/03/2016 122 Formation NodeJS, avancé alphorm.com™© promise-it-wont-hurt Let’s code Exercices: ‘FR_260_03_09/Exercices/’
  123. 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. 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. 125. 10/03/2016 125 Formation NodeJS, avancé alphorm.com™© Plan • Un peu d'histoire • WebSocket
  126. 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. 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. 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. 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. 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. 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. 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. 133. 10/03/2016 133 Formation NodeJS, avancé alphorm.com™© Cours Ajouter le code côté serveur Cours : ‘FR_260_04_01/Cours/’
  134. 134. 10/03/2016 134 Formation NodeJS, avancé alphorm.com™© Cours Ajouter le code côté client Cours : ‘FR_260_04_01/Cours/’
  135. 135. 10/03/2016 135 Formation NodeJS, avancé alphorm.com™© Side project: ChatWithMe • Intégrer socket.io dans ChatWithMe • Side project : ‘ChatWithMe/’
  136. 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. 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. 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. 139. 10/03/2016 139 Formation NodeJS, avancé alphorm.com™© Arborescence des objets et des Managers userManager User RoomManager room Message
  140. 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. 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. 142. 10/03/2016 142 Formation NodeJS, avancé alphorm.com™© ChatWithMe, le code Backend Let’s code Side project: ‘ChatWithMe/’
  143. 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. 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. 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. 146. 10/03/2016 146 Formation NodeJS, avancé alphorm.com™© Arborescence des objets et des Managers Realtime.js Room
  147. 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. 148. 10/03/2016 148 Formation NodeJS, avancé alphorm.com™© ChatWithMe, le code Front Let’s code Side project: ‘ChatWithMe/’
  149. 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. 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. 151. 10/03/2016 151 Formation NodeJS, avancé alphorm.com™© Plan • Introduction à Mysql • Mysql avec Cloud9 • Let’s code
  152. 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. 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. 154. 10/03/2016 154 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_00/Cours/’
  155. 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. 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. 157. 10/03/2016 157 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est ce qu’un ORM ? • Sequelize • Let’s code
  158. 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. 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. 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. 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. 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. 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. 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. 165. 10/03/2016 165 Formation NodeJS, avancé alphorm.com™© Plan • Les différents types de liaison • Let’s code
  166. 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. 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. 168. 10/03/2016 168 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_02/Cours/association.js’
  169. 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. 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. 171. 10/03/2016 171 Formation NodeJS, avancé alphorm.com™© Plan • Introduction à Redis • Redis avec Cloud9 • Let’s code
  172. 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. 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. 174. 10/03/2016 174 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_03/Cours/’
  175. 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. 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. 177. 10/03/2016 177 Formation NodeJS, avancé alphorm.com™© Plan • Introduction à MongoDB • MongoDB avec Cloud9 • CRUD
  178. 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. 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. 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. 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. 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. 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. 184. 10/03/2016 184 Formation NodeJS, avancé alphorm.com™© Plan • Les associations • Let’s code
  185. 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. 186. 10/03/2016 186 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Cours : ‘FR_260_05_05/Cours/associate.js’
  187. 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. 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. 189. 10/03/2016 189 Formation NodeJS, avancé alphorm.com™© Plan •Let’s code
  190. 190. 10/03/2016 190 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Side project: ‘ChatWithMe’
  191. 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. 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. 193. 10/03/2016 193 Formation NodeJS, avancé alphorm.com™© Plan •Let’s code
  194. 194. 10/03/2016 194 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Side project: ‘ChatWithMe’
  195. 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. 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. 197. 10/03/2016 197 Formation NodeJS, avancé alphorm.com™© Plan •Let’s code
  198. 198. 10/03/2016 198 Formation NodeJS, avancé alphorm.com™© Exemple Let’s code Side project: ‘ChatWithMe’
  199. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 211. 10/03/2016 211 Formation NodeJS, avancé alphorm.com™© Plan • Qu’est-ce que Keymetrics ? • Inscription • Lien avec PM2 • Ajout de sondes
  212. 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. 213. 10/03/2016 213 Formation NodeJS, avancé alphorm.com™© Inscription • Inscription : https://app.keymetrics.io/#/login
  214. 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. 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. 216. 10/03/2016 216 Formation NodeJS, avancé alphorm.com™© Exemple Ajout de nouvelle sonde Side project : ‘ChatWithMe’
  217. 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. 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. 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. 220. 10/03/2016 220 Formation NodeJS, avancé alphorm.com™© Avez-vous des Questions / Remarques / Commentaires ?
  221. 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

×