18.01.2011 | Matthias Gutjahr  matthias-gutjahr.de | @mattsches
HYPE!!11elf!
util.inspect(node); <ul><li>Anfang 2009 von Ryan Dahl entwickelt
Motivation: Nicht-blockierende Aufrufe
Server-seitiges Javascript
„ Reactor pattern “: Ereignisverarbeitung
libev : High-performance event loop
Auf dem Server ähnlich einer Java VM
Schnell! </li></ul>
alert('Why .js?'); <ul><li>Breite User-Basis, stabile Frameworks (jQuery)
Closures, anonyme Funktionen, Funktionen als Variablen
Event-basiert, non-blocking
Upcoming SlideShare
Loading in …5
×

node.js

2,146 views
2,089 views

Published on

Kurze Einführung in node.js, die ich ihm Rahmen der PHP User Group Rheinhessen gehalten habe.

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,146
On SlideShare
0
From Embeds
0
Number of Embeds
219
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

node.js

  1. 1. 18.01.2011 | Matthias Gutjahr matthias-gutjahr.de | @mattsches
  2. 2. HYPE!!11elf!
  3. 3. util.inspect(node); <ul><li>Anfang 2009 von Ryan Dahl entwickelt
  4. 4. Motivation: Nicht-blockierende Aufrufe
  5. 5. Server-seitiges Javascript
  6. 6. „ Reactor pattern “: Ereignisverarbeitung
  7. 7. libev : High-performance event loop
  8. 8. Auf dem Server ähnlich einer Java VM
  9. 9. Schnell! </li></ul>
  10. 10. alert('Why .js?'); <ul><li>Breite User-Basis, stabile Frameworks (jQuery)
  11. 11. Closures, anonyme Funktionen, Funktionen als Variablen
  12. 12. Event-basiert, non-blocking
  13. 13. Google V8: schnell </li><ul><li>Just-In-Time-Compiling
  14. 14. Inline Caching
  15. 15. Garbage Collection </li></ul></ul>
  16. 16. node.features(); <ul><li>Single thread, alle Abfragen parallel
  17. 17. Persistente Verbindungen
  18. 18. Kein DOM (über Module aber doch)
  19. 19. API für HTTP, Dateisystem, Netzwerk, …
  20. 20. CommonJS
  21. 21. Viele Module, aktive Community </li></ul>
  22. 22. $ node helloworld.js var http = require ( 'http' ); http. createServer ( function (request, response) { response. writeHead ( 200 , { 'Content-type' : 'text-plain' }); response. end ( 'Hello World! n ' ); }). listen ( 8001 );
  23. 23. <?php echo 'Blocking';?> $query = &quot;SELECT * FROM foo WHERE bar = 'baz'&quot; ; $result = mysql_query ( $query ); // Warten auf das Result doSomethingElse (); util.print('NonBlocking'); db. query ( &quot;SELECT * FROM foo WHERE bar = 'baz'&quot; , function (update, select) { // Tu etwas mit dem Result }); doSomethingElse (); // passiert sofort
  24. 24. var foo = require('foo'); <ul><li>npm (Modul-Installer)
  25. 25. Connect (HTTP Middleware)
  26. 26. Express (Web-/MVC-Framework)
  27. 27. Socket IO (Websockets)
  28. 28. mysql
  29. 29. Apricot (Webseiten-Scraping)
  30. 30. … uvm. </li></ul>
  31. 31. $ node my_app.js <ul><li>Yahoo!, Palm webOS 2.0, Yammer, ...
  32. 32. Realtime Web
  33. 33. Rapid prototyping
  34. 34. Webchat
  35. 35. MMOG
  36. 36. … mehr Ideen??? </li></ul>
  37. 37. node.future(); <ul><li>Noch sehr jung (BETA!) </li><ul><li>Häufige Änderungen am API
  38. 38. Testing
  39. 39. Ökosystem aus der Community </li></ul></ul>
  40. 40. util.print('Beispiel');
  41. 41. util.print('Danke!'); <ul><li>@mattsches
  42. 42. http://matthias-gutjahr.de
  43. 43. http://www.slideshare.net/mattsches </li></ul>

×