Successfully reported this slideshow.

Introduction to node.js GDD

15

Share

Upcoming SlideShare
Complete MVC on NodeJS
Complete MVC on NodeJS
Loading in …3
×
1 of 38
1 of 38

Introduction to node.js GDD

15

Share

Download to read offline

Slides from my workshop about node.js which I conducted in Girl Geek Dinner Bangalore. More details at http://sudarmuthu.com/blog/introduction-to-node-js-at-yahoo-girl-geek-dinner

Slides from my workshop about node.js which I conducted in Girl Geek Dinner Bangalore. More details at http://sudarmuthu.com/blog/introduction-to-node-js-at-yahoo-girl-geek-dinner

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Introduction to node.js GDD

  1. 1. Introduction to Node.js Sudar Muthu (@sudarmuthu) Research Engineer Yahoo! Labs http://github.com/sudar http://sudarmuthu.com
  2. 2. Agenda  What Node.JS is not  What is Node.JS  Why Node.JS?  Using Node.JS › As a interactive shell › As a Server › As a Client  Common Modules  Terminologies  Workshop
  3. 3. Node.JS is not …  Ruby on Rails  Django  Codeigniter  CakePHP Node.JS is bare bone and the community are making stuff like Express, connect etc.
  4. 4. What is Node.JS  JavaScript Programming Environment for creating highly scalable network programs  Provides Evented, non-blocking I/O  Built on top of V8 engine  Supports C/C++ based addons  Supports CommonJS Module format  Is fast .. in fact very fast.  Similar to Event machine in Ruby or Twisted in Python
  5. 5. What is Evented I/O
  6. 6. Single thread Synchronous I/O
  7. 7. Single thread Synchronous I/O
  8. 8. Multi thread Synchronous I/O
  9. 9. Multi thread Synchronous I/O
  10. 10. You can throw in more servers, but that will cost you lot of money.
  11. 11. Synchronous I/O
  12. 12. Synchronous I/O
  13. 13. Synchronous I/O
  14. 14. Single thread Asynchronous I/O
  15. 15. Why Node.JS? So, code like this var result = db.query("select.."); // use result either blocks the entire process or implies multiple execution stacks (threads).
  16. 16. Why Node.JS? But code like this db.query("select..", function (result) { // use result }); allows the program to return to the event loop immediately. No more unnecessary threads.
  17. 17. Demo of Callback // execute the callback after 2 seconds setTimeout(function () { console.log("World!"); }, 2000); // print in console console.log("Hello"); https://github.com/sudar/node.js-samples/blob/master/callback.js
  18. 18. Using Node.JS  Install Node.JS  Install NPM  Install other modules you want by doing npm install <module_name>  You are good to go (This setup is already done for you. Use the Ubuntu image in the pen drive)
  19. 19. Node.JS – as an interactive shell Similar to Python’s shell $> node >3+1 4 > true != false true >.help >.exit
  20. 20. Node.JS – As a server var http = require('http'); // require the http module // create a server http.createServer(function (req, res) { // call this function when a request is received res.writeHead(200, { 'Content-Type': 'text/plain' }); // send this as part of the response res.end('Hello Worldn'); }).listen(1337, "127.0.0.1"); // listen on port 1337 // debug information console.log('Server running at http://127.0.0.1:1337/'); https://github.com/sudar/node.js-samples/blob/master/http-server.js
  21. 21. Node.JS – As a client var http = require('http'); // require the needed modules // make the request object var request = http.request({ 'host': 'sudarmuthu.com', 'port': 80, 'path': '/', 'method': 'GET' }); // assign callbacks request.on('response', function (response) { console.log('Response Status Code: ' + response.statusCode); response.on('data', function (data) { console.log('Body: ' + data); }); }); https://github.com/sudar/node.js-samples/blob/master/http-client.js
  22. 22. Core Modules  Processes  Filesystem  Networking  Utilities The entire list can be found at http://nodejs.org/api/
  23. 23. Core Modules - Processes Node allows you to analyze your process and manage external process Available Modules  process  child_process Code samples: https://github.com/sudar/node.js- samples/blob/master/process.js
  24. 24. Core Modules - Filesystem Low level API to manipulate files Available Modules  fs  path Code Samples: https://github.com/sudar/node.js- samples/blob/master/filesystem.js
  25. 25. Core Modules - Networking Available Modules  net  dgram  http  tls  https  dns Code Samples: https://github.com/sudar/node.js- samples/blob/master/dns.js
  26. 26. Core Modules - Utilities Provides utility methods Available Modules  console  util Code Samples: https://github.com/sudar/node.js- samples/blob/master/console.js
  27. 27. Node.JS is useful for..  Writing highly concurrent server applications  Sharing application logic between server and client  Peer-to-peer web applications using websockets  Real-time applications
  28. 28. Terminologies  NPM – Package manager (like apt-get)  Modules – Plugins or add-ons for Node.JS  Express – MVC framework (like RoR)  Jade – Template Engine (like Smarty)  Socket.IO – A websockets Library
  29. 29. Links  http://github.com/sudar/node.js-samples (all code samples used in this talk)  http://nodejs.org  http://npmjs.org  http://expressjs.com  http://socket.io
  30. 30. Workshop
  31. 31. Express JS  Basic web framework  Runs on top of node.js  Provides routing and redirection helpers  Dynamic view helpers  Has support for sessions  Focus on high performance
  32. 32. Hello World Express App https://github.com/sudar/node.js-samples/tree/master/express/hello-world
  33. 33. Square Things App  Allows you to choose the color of a square region  A very simple server implementation  A very simple client MVC implementation  Uses node.js on the server  Uses Y.App implementation on the client https://github.com/ericf/square-thing-app
  34. 34. Thank you

×