Réu technodejs

1 111 vues

Publié le

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

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 111
Sur SlideShare
0
Issues des intégrations
0
Intégrations
9
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Réu technodejs

  1. 1. Présentation de Node.JS Réunion Technique @CleverAge 17/06/2011 Code des démonstrations: https://github.com/naholyr/demo-reunion-technique-nodejs
  2. 2. Le me introduce <ul><li>Web : Javascript côté serveur
  3. 3. Performant : Moteur V8 de Chrome + API asynchrone
  4. 4. Open-Source : https://github.com/joyent/node
  5. 5. En prod : tempalias ( http://301.tl/2v ) , transloadit ( http://301.tl/2u ) , yammer ( http://301.tl/2s ) , 301TL ( http://301.tl ) … Et d'autres tous les jours o/ ( http://301.tl/2t ) </li></ul>Ryah Dahl @ryah – http://nodejs.org
  6. 6. JS côté serveur <ul><li>Pas une idée récente... SSJS -> Netscape -> 1996
  7. 7. Pas vraiment le seul...
  8. 8. Le plus puissant? Le plus rapide? Simple question de timing? </li><ul><li>Performances
  9. 9. Qualité de l'API réseau </li></ul></ul>http://en.wikipedia.org/wiki/Comparison_of_server-side_JavaScript_solutions
  10. 10. Communauté <ul><li>Projet open-source démarré en 2009
  11. 11. Top 3 des projets les plus surveillés sur github
  12. 12. Plus de 150 contributeurs
  13. 13. Plus de 2000 modules
  14. 14. Et ça ne fait que commencer! </li></ul>
  15. 15. Performances <ul><li>Choix de l'asynchrone = garantie d'un meilleur temps de réponse et d'une meilleure gestion de la montée en charge -> attente de ressources versus -> jamais bloqué
  16. 16. Un petit benchmark ? http://naholyr.fr/2011/06/benchmark-node-js-methodes-synchrones-ou-asynchrones/ </li></ul>
  17. 17. Modules & dépendances <ul><li>Node est modulaire require(…)
  18. 18. Gestionnaire de modules officiel : npm </li><ul><li>package.json
  19. 19. Gestion des dépendances -> Dependency-hell will burn your brain !
  20. 20. Installation locale au projet
  21. 21. Possibilité d'utiliser ses propres dépôts </li></ul></ul>Isaacs @izs – http://npmjs.org
  22. 22. La soupe de callbacks <ul><li>async simplifie: </li><ul><li>Les appels successifs
  23. 23. Les appels en cascade
  24. 24. github.com/caolan/async </li></ul></ul>foo(function (err, res1) { if (err) throw err; bar(result1, function (err, res2) { if (err) throw err; baz(res2, function (err) { if (err) throw err; biz(function (err) { zOMG INDENT OVERFLOW !!1! eleven ! }) }); }); }); async.waterfall([ function (c) { foo(c); }, function (res1, c) { bar(res1, c); }, function (res2, c) { biz(c) HMMM I FEEL NICE :) } ], function (err) { throw err; });
  25. 25. Web: on repart de Ø! <ul><li>Pas de vrais frameworks ”full-stack” </li><ul><li>Surtout pas d'ORMs en fait ( mais c'est pas grave )
  26. 26. Mais des microframeworks </li></ul><li>Let me introduce </li></ul>npm install express app. get (' / ', function (req, res) { res. render(”home”, {”title”: ”hello”}) ; } app. get (' /profile/:id ', function (req, res) { var user = User.find({”id”: req.params.id}); if (!user) { res.send('Invalid user ID', 404); } else { res. render(”profile”, {”user”: user}) ; } }); TJ Holowaychuk @tjholowaychuk Learnboost - https://github.com/learnboost
  27. 27. Temps réel <ul><li>socket.io </li><ul><li>Côté client et aussi côté serveur!
  28. 28. Côté serveur: Connexions, traitements, broadcasting...
  29. 29. Côté client: Fallback automatique sur la technologie dispo (Websockets, Flash, Long polling, iframe...)
  30. 30. Push! </li></ul></ul>var client = new io.Socket (); client.on(' connect ', function(){   alert('ready to play'); }); client.on(' message ', function( msg ){   if (msg.win || msg.lose) { alert(”Win? Lose?”); } }); var server = io.listen(app) ; // Un nouveau gagnant toutes les 10 secondes setInterval(function () { if (server.clients.length < 2) { server.broadcast ({”lose”:true}); } else { var client = getRandom(); client.send ({”win”:true}); server.broadcast ({”lose”:true}, client); } }, 10000);
  31. 31. Techno hype = cloud <ul><li>dotcloud </li><ul><li>deploy -t nodejs ns.nom
  32. 32. push ns.nom
  33. 33. http://nom.ns.dotcloud.com </li></ul><li>cloud9ide </li><ul><li>IDE en ligne
  34. 34. Liaison directe avec github
  35. 35. Test serveur en live </li></ul></ul>
  36. 36. Pleins de projets top cool http://nodecloud.org
  37. 37. Questions subsidiaires ?

×