introduction to node.js gdd

38

Upload: sudar-muthu

Post on 06-May-2015

6.003 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Introduction to node.js GDD
Page 2: Introduction to node.js GDD

Introduction to Node.js

Sudar Muthu (@sudarmuthu)

Research Engineer

Yahoo! Labs

http://github.com/sudar

http://sudarmuthu.com

Page 3: Introduction to node.js GDD

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

Page 4: Introduction to node.js GDD

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.

Page 5: Introduction to node.js GDD

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

Page 6: Introduction to node.js GDD

What is Evented I/O

Page 7: Introduction to node.js GDD

Single thread Synchronous I/O

Page 8: Introduction to node.js GDD

Single thread Synchronous I/O

Page 9: Introduction to node.js GDD

Multi thread Synchronous I/O

Page 10: Introduction to node.js GDD

Multi thread Synchronous I/O

Page 11: Introduction to node.js GDD

You can throw in more servers, but that will cost you lot of money.

Page 12: Introduction to node.js GDD
Page 13: Introduction to node.js GDD
Page 14: Introduction to node.js GDD
Page 15: Introduction to node.js GDD

Synchronous I/O

Page 16: Introduction to node.js GDD

Synchronous I/O

Page 17: Introduction to node.js GDD

Synchronous I/O

Page 18: Introduction to node.js GDD

Single thread Asynchronous I/O

Page 19: Introduction to node.js GDD

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).

Page 20: Introduction to node.js GDD

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.

Page 21: Introduction to node.js GDD

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

Page 22: Introduction to node.js GDD

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)

Page 23: Introduction to node.js GDD

Node.JS – as an interactive shellSimilar to Python’s shell

$> node

> 3 + 1

4

> true != false

true

>.help

>.exit

Page 24: Introduction to node.js GDD

Node.JS – As a servervar 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 World\n');

}).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

Page 25: Introduction to node.js GDD

Node.JS – As a clientvar 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

Page 26: Introduction to node.js GDD

Core Modules

Processes Filesystem Networking Utilities

The entire list can be found at http://nodejs.org/api/

Page 27: Introduction to node.js GDD

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

Page 28: Introduction to node.js GDD

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

Page 29: Introduction to node.js GDD

Core Modules - NetworkingAvailable Modules

net dgram http tls https dns

Code Samples: https://github.com/sudar/node.js-samples/blob/master/dns.js

Page 30: Introduction to node.js GDD

Core Modules - UtilitiesProvides utility methods

Available Modules

console util

Code Samples: https://github.com/sudar/node.js-samples/blob/master/console.js

Page 31: Introduction to node.js GDD

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

Page 32: Introduction to node.js GDD

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

Page 33: Introduction to node.js GDD

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

Page 34: Introduction to node.js GDD

Workshop

Page 35: Introduction to node.js GDD

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

Page 36: Introduction to node.js GDD

Hello World Express App

https://github.com/sudar/node.js-samples/tree/master/express/hello-world

Page 37: Introduction to node.js GDD

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

Page 38: Introduction to node.js GDD

Thank you