NodeJs, une introduction
-
Upload
toxicode -
Category
Technology
-
view
2.207 -
download
2
description
Transcript of NodeJs, une introduction
![Page 1: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/1.jpg)
une introduction...
ApéroTech Oxalide, 24 juin 2013
(version légèrement modifiée, avec plus de texte, pour l’adapter à la mise en ligne)
![Page 2: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/2.jpg)
Qu’est-ce que c’est ?
![Page 3: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/3.jpg)
JavaScript
JavaScript, un langage qui a été connu dans les années 90 pour servir à faire des animations comme :
![Page 4: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/4.jpg)
Welcome to my homepage !!!
I love kittens !!!!
They are so cute !
I love kittens !!!!I love kittens !!!!photo : www.christianholmer.com
![Page 5: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/5.jpg)
JavaScript, ça ressemble à :
![Page 6: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/6.jpg)
JavaScript
Hors du navigateur
accès aux fichiers, au reste de la machine
=> on pourrait par exemple faire un logiciel de conversion d’image, logiciel de backup...
![Page 7: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/7.jpg)
JavaScript
Avec des fonctions pour
serveurs
Hors du navigateur
JS JS
JS
![Page 8: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/8.jpg)
Pourquoi en parle-t-on ?
![Page 9: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/9.jpg)
JavaScript
Avec des fonctions pour
serveursUtilise V8
Hors du navigateur
![Page 10: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/10.jpg)
JavaScript
Avec des fonctions pour
serveursÉvénementiel
Utilise V8
Hors du navigateur
![Page 11: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/11.jpg)
Événementiel
![Page 12: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/12.jpg)
Asynchrone
JavaScript
Avec des fonctions pour
serveursÉvénementiel
Utilise V8
Hors du navigateur
![Page 13: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/13.jpg)
Synchrone
Appel HTTP
![Page 14: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/14.jpg)
Asynchrone : Illustration
imaginons un serveur webqui lorsque vous l’interrogez,
va demander à son tour à Twitterles derniers tweets de tel utilisateur
Voyons ce qui se passe sur un serveur «normal», synchrone
![Page 15: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/15.jpg)
Synchrone
Appel HTTP
Serveur bloqué pendant ce temps
![Page 16: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/16.jpg)
Synchrone
Autre appel HTTP
Mis en attente...
![Page 17: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/17.jpg)
Asynchrone
le serveur n’est pas bloqué pendant l’appel à Twitter
![Page 18: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/18.jpg)
Synchrone
Asynchrone
![Page 19: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/19.jpg)
Synchrone
Asynchrone
![Page 20: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/20.jpg)
Un exemple très simple
![Page 21: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/21.jpg)
Exemple
![Page 22: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/22.jpg)
L’écosystèmeEst-ce mûr ?
![Page 23: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/23.jpg)
L’écosystème nodeJS
• nodeJS autosuffisant en serveur web(vs php => Apache)
• des modules NPMexpress, jade, socket.io, mocha
• la communauté, très dynamique mais avec un aspect expérimental fort
![Page 24: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/24.jpg)
Asynchrone
Avec des fonctions pour
serveursÉvénementiel
Utilise V8
Hors du navigateur
JavaScript
![Page 25: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/25.jpg)
Asynchrone
Avec des fonctions pour
serveursÉvénementiel
Utilise V8
Hors du navigateur
JavaScript
Le quotidien du développeur nodeJS, c’est avant tout du :
![Page 26: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/26.jpg)
Remise en contexte :l’histoire de JavaScript
![Page 27: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/27.jpg)
JavaScript
N’est pas un mini
1995
Un nom de langage assez mal choisi, qui l’a desservi
![Page 28: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/28.jpg)
JavaScript
vs
1996
La guerre des navigateurs porte un coup fatal au JS
![Page 29: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/29.jpg)
JavaScript1999-2000
Macromedia / Adobe Flash
Remplace JavaScript comme moyen phare pour rendre les pages web dynamiques
![Page 30: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/30.jpg)
JavaScript2004-2007
Asynchronous JavaScript And XML
Relance un intérêt pour JavaScript
![Page 31: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/31.jpg)
JavaScript2007-2008
Surcouche gérant la compatibilité : permet d’amoindrir les désastres causés
par guerre des navigateurs.
![Page 32: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/32.jpg)
JavaScript2008-2010
V8
Le JavaScript devient rapide,enclenchant une compétition entre navigateurs
![Page 33: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/33.jpg)
JavaScript2010-2012
HTML 5 révolutionne le web,le grand pilote central, c’est JavaScript
Apple en refusant Flash, en accélère l’adoption
sur mobile
![Page 34: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/34.jpg)
JavaScript2010-...
Backbone
![Page 35: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/35.jpg)
Quand l’utiliser ?
![Page 36: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/36.jpg)
Asynchrone
JavaScript
Avec des fonctions pour
serveursÉvénementiel
Utilise V8
Hors du navigateur
La réponse découle des caractéristiques déjà évoquées :
... mais aussi de l’histoire de JavaScript
![Page 37: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/37.jpg)
JavaScript
Quand l’utiliser ?
lorsqu’on aime JavaScript...
![Page 38: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/38.jpg)
Quand l’utiliser ?
JS JS
Lorsqu’il est intéressant d’avoir le même langage côté serveur & client
![Page 39: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/39.jpg)
Quand l’utiliser ?
Appel de WebServices
![Page 40: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/40.jpg)
Quand l’utiliser ?
Utilise V8
Serveur d’API
surtout JSON
Pages web simples
![Page 41: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/41.jpg)
Quand l’utiliser ?
Avec des fonctions pour
serveurs
Utilise V8
manipulations http bas niveau
TCP / UDPStreaming
![Page 42: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/42.jpg)
Quand l’utiliser ?
Temps réel / websockets
![Page 43: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/43.jpg)
Quand ne PAS l’utiliser ?
![Page 44: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/44.jpg)
Quand ne PAS l’utiliser ?
• Projets nécessitant frameworks pour architecture
• Gros projets en terme de développeurs
• Calculs très gourmands en CPU
• Faire votre blog...
![Page 45: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/45.jpg)
Qui l’utilise ?
Ebay
WalmartMozilla
Yahoo!
![Page 46: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/46.jpg)
Exemple : LinkedIn
• Rails => node.js
• rapidité => x20
• nombre de serveurs : 30 => 3
![Page 47: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/47.jpg)
NodeJS en est probablement ici
![Page 48: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/48.jpg)
Le problème de recrutement
vs
Rappelez vous les mauvais départs de JavaScript...
![Page 49: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/49.jpg)
Le problème de recrutement
• très grosse majorité de novices
• ne savent pas qu’ils sont novices
• JQuery n’es pas JavaScript
Test : demandez leur ce qu’est un «prototype» !
![Page 50: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/50.jpg)
Le problème de recrutement
• les programmeurs expérimentés dans d’autres langages ont des a priori sur JavaScript
• La programmation asynchrone est particulière, c’est une manière différente de penser et de coder
![Page 51: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/51.jpg)
Livre conseillé pour prendre un peu de recul sur JavaScript
Autant pour ses enseignements et conseils sur le langage que
pour la démarche intellectuelle de l’auteur
Les chapitres très intéressants :1, 3, 4 & 5
![Page 52: NodeJs, une introduction](https://reader035.fdocuments.us/reader035/viewer/2022062303/5564bc8bd8b42a3e618b526f/html5/thumbnails/52.jpg)
Merci !
Conseils, prestations et formations en JS avancé