TechConf 
Autour de Node.js 
Luc Juggery (@lucjuggery) - 11 décembre 2014
Au programme 
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
2
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
3
Les concepts 
JavaScript 
Server side 
Event loop 
Chrome V8 
Single thread Callback 
Non blocking I/O 
4
Les concepts: Chrome V8 
● Moteur d’exécution de JavaScript présent dans Google Chrome 
● Utilisé pour faire tourner du Ja...
Les concepts: JavaScript coté serveur 
● Node.js ⇒ code JavaScript exécuté par Chrome V8 
● Très utilisé pour des applicat...
Les concepts: Single thread 
● “Everything runs in parallel except your code” 
● Une application Node.js ne lance qu’un se...
Les concepts: Non blocking I/O 
● La gestion des I/O est effectuée de façon asynchrone 
o disque / réseau / database / … 
...
Les concepts - Callback exemple 1 
événement 
fonction de 
callback 
Server HTTP 
Réception d’une requête ⇒ déclenchement ...
Les concepts - Callback exemple 2 
Fonctions de callback encapsulées 
10
Les concepts - Event loop / Callback 
● Callback: méthode en attente d’événements I/O 
● Event loop: basée sur l’architect...
C’est l’heure du Quiz ! 
Question: un serveur web Node.js est plus approprié pour: 
A. des traitements gourmands en CPU 
B...
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
13
Un écosystème - NPM 
● Gestionnaire de modules de Node.js 
● De nombreux modules très matures 
● Grande communauté 
● Une ...
Un écosystème - package.json 
● Descriptif de l’application 
o conserve les versions des dépendances 
o ‘npm init’ ⇒ créat...
Un écosystème - démo 
● Génération du package.json 
● Installation du module request (client http) 
o modification du pack...
Un ecosystème - des modules clés 
● connect - framework pour serveur http ⇔ Ruby Rack 
● express - ajoute des vues dynamic...
● Les concepts 
● Un écosystème 
● Sails.js - framework de développement web 
18
Sails.js - positionnement du framework 
● MVC framework for Node.js 
● Inspiré de Ruby On Rails 
● Basé sur Express et Soc...
Sails.js - API Rest démo 1/2 
> npm install -g sails 
> sails new TechConfSailsApp 
> sails generate api user 
> sails lif...
Sails.js - API Rest démo 2/2 
> 
> curl -XPOST http://localhost:1337/user?name=Stephane 
21
Sails.js - Exemple de projet 
Backend: Sails API 
Front-end: Sails EJS + Twitter Bootstrap 
22
Conclusion 
● Un framework mature (même si pas encore en 1.0) 
● Utilisé par des grosses entreprises (eBay, Walmart, …) 
●...
Merci !
Prochain SlideShare
Chargement dans…5
×

Autour de Node.js - TechConf#3

734 vues

Publié le

Présentation des concepts autour de Node.js ainsi que son écosystème de modules. Très rapide overview de Sails.js, un excellent framework de développement d'API REST et d'application web.

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
734
Sur SlideShare
0
Issues des intégrations
0
Intégrations
26
Actions
Partages
0
Téléchargements
11
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Autour de Node.js - TechConf#3

  1. 1. TechConf Autour de Node.js Luc Juggery (@lucjuggery) - 11 décembre 2014
  2. 2. Au programme ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 2
  3. 3. ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 3
  4. 4. Les concepts JavaScript Server side Event loop Chrome V8 Single thread Callback Non blocking I/O 4
  5. 5. Les concepts: Chrome V8 ● Moteur d’exécution de JavaScript présent dans Google Chrome ● Utilisé pour faire tourner du JavaScript hors navigateur ● Très performant (phase de compilation) 5
  6. 6. Les concepts: JavaScript coté serveur ● Node.js ⇒ code JavaScript exécuté par Chrome V8 ● Très utilisé pour des applications réseaux o serveur HTTP / TCP / ... o WebSocket (ex: messagerie instantanée) ● D’autres utilisations: scripting, DevOps, ... ● Ne convient pas à tous les usages 6
  7. 7. Les concepts: Single thread ● “Everything runs in parallel except your code” ● Une application Node.js ne lance qu’un seul thread ● Ne convient pas pour des traitements concurrents gourmands en CPU ⇒ risque de blocage du thread ● Permet au contraire une grande concurrence pour des traitements utilisant beaucoup d’I/O ⇒ comment ? 7
  8. 8. Les concepts: Non blocking I/O ● La gestion des I/O est effectuée de façon asynchrone o disque / réseau / database / … o ne bloque pas le thread principal ● blocking I/O vs Non blocking I/O > blocking I/O ⇒ attend la fin du traitement > non blocking I/O ⇒ sert le client suivant et attend d’être notifié par les clients précédents (callback) ● Lié aux notions de callback et d’event loop 8
  9. 9. Les concepts - Callback exemple 1 événement fonction de callback Server HTTP Réception d’une requête ⇒ déclenchement de la fonction de callback 9
  10. 10. Les concepts - Callback exemple 2 Fonctions de callback encapsulées 10
  11. 11. Les concepts - Event loop / Callback ● Callback: méthode en attente d’événements I/O ● Event loop: basée sur l’architecture événementielle de JavaScript o enregistrement des callbacks au lancement de l’application o déclenche les callbacks sur réception d’événements 1. Event loop lancée à l’exécution du code 2. Enregistrement des fonctions de callback 3. Envoi d’un événement lorsqu’un traitement est terminé 4. Déclenchement de la fonction de callback correspondante 11
  12. 12. C’est l’heure du Quiz ! Question: un serveur web Node.js est plus approprié pour: A. des traitements gourmands en CPU B. des traitements avec beaucoup d’I/O et peu de CPU C. des traitements sans I/O D. des calculs scientifiques complexes Répondez vite en tweetant sur @TechConfQuiz 12
  13. 13. ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 13
  14. 14. Un écosystème - NPM ● Gestionnaire de modules de Node.js ● De nombreux modules très matures ● Grande communauté ● Une CLI riche (npmjs.org/doc/) o pour gérer les modules o pour interagir avec l’application (init / start / stop / test / …) 14
  15. 15. Un écosystème - package.json ● Descriptif de l’application o conserve les versions des dépendances o ‘npm init’ ⇒ création du fichier package.json o ‘npm install MODULE --save’ ⇒ compile et trace les dépendances npm init npm install request --save 15
  16. 16. Un écosystème - démo ● Génération du package.json ● Installation du module request (client http) o modification du package.json o génération du folder node_modules ● Mise en place d’une requête simple ● Lancement de l’application 16
  17. 17. Un ecosystème - des modules clés ● connect - framework pour serveur http ⇔ Ruby Rack ● express - ajoute des vues dynamic et un DSL pour la description des routes (connect+) ● request - client http ● async - maitrise du flux et simplification du callback hell ● socket.io - websocket ● mocha - framework de test très complet ● winston - framework de logging ● forever / pm2 - supervision de l’application ● grunt / gulp - lanceur de tache ⇔ Ruby Rake ● lodash - ensemble d’utilitaires ● momentjs - facilite l’utilisation des date / time 17
  18. 18. ● Les concepts ● Un écosystème ● Sails.js - framework de développement web 18
  19. 19. Sails.js - positionnement du framework ● MVC framework for Node.js ● Inspiré de Ruby On Rails ● Basé sur Express et Socket.io ● Vues dynamiques (template EJS) ● Focus sur les API HTTP REST ● Compatible SQL / NoSQL ● Architecture très structurante 19
  20. 20. Sails.js - API Rest démo 1/2 > npm install -g sails > sails new TechConfSailsApp > sails generate api user > sails lift 20
  21. 21. Sails.js - API Rest démo 2/2 > > curl -XPOST http://localhost:1337/user?name=Stephane 21
  22. 22. Sails.js - Exemple de projet Backend: Sails API Front-end: Sails EJS + Twitter Bootstrap 22
  23. 23. Conclusion ● Un framework mature (même si pas encore en 1.0) ● Utilisé par des grosses entreprises (eBay, Walmart, …) ● Beaucoup de modules en version 0.0.y / 0.x.y o certains déjà matures o peut effrayer les clients ● Des avis contraires o node.js is cancer o node.js cures cancer ● Ne convient pas à tous les besoins  A tester sur des uses cases métiers 23
  24. 24. Merci !

×