Slide 1

Slide 1 text

Introduction to Node Alex

Slide 2

Slide 2 text

Overview ‣ Brief

Slide 3

Slide 3 text

5 Years Ago... ‣ We

Slide 4

Slide 4 text

Thursday, 7 February 13

Slide 5

Slide 5 text

A

Slide 6

Slide 6 text

Node’s Strengths ‣ Network-oriented

Slide 7

Slide 7 text

Installation ‣ Wizards

Slide 8

Slide 8 text

Runtime Environment ‣ Every

Slide 9

Slide 9 text

Modules ‣ CommonJS

Slide 10

Slide 10 text

Core Modules ‣ Events,

Slide 11

Slide 11 text

"Node's

Slide 12

Slide 12 text

Why Bother? ‣ Events/streams

Slide 13

Slide 13 text

Streams var zlib = require('zlib').createGzip(); var fs = require('fs'); var inp = fs.createReadStream('input.txt'); var out = fs.createWriteStream('output.txt.gz'); inp.pipe(gzip).pipe(out); Clean,

Slide 14

Slide 14 text

Events var util = require('util'); var events = require('events'); function Player() { events.EventEmitter.call(this); } util.inherits(Player, events.EventEmitter); var player = new Player(); player.on('play', function(track) { console.log('[NP]:', track.title); }); player.emit('play', { title: 'Spit On A Stranger', artist: 'Pavement' }); Thursday, 7 February 13

Slide 15

Slide 15 text

Servers var net = require('net'); var server = net.createServer(function(c) { console.log('server connected'); c.on('end', function() { console.log('server disconnected'); }); c.write('hello\r\n'); c.pipe(c); }); server.listen(8124, function() { //'listening' listener console.log('server bound'); }); Thursday, 7 February 13

Slide 16

Slide 16 text

HTTP Server var http = require('http'); var fs = require('fs'); http.createServer(function(req, res) { fs.readFile(__dirname + 'index.html', function(err, data) { if (err) { res.statusCode = 500; res.end(String(err)); } else { res.end(data); } }); }).listen(8000); Thursday, 7 February 13

Slide 17

Slide 17 text

HTTP Server var http = require('http'); var fs = require('fs'); http.createServer(function(req, res) { fs.readFile(__dirname + 'index.html', function(err, data) { if (err) { res.statusCode = 500; res.end(String(err)); } else { res.end(data); } }); }).listen(8000); Thursday, 7 February 13

Slide 18

Slide 18 text

HTTP Server var http = require('http'); var fs = require('fs'); http.createServer(function(req, res) { fs.readFile(__dirname + 'index.html', function(err, data) { if (err) { res.statusCode = 500; res.end(String(err)); } else { res.end(data); } }); }).listen(8000); Thursday, 7 February 13

Slide 19

Slide 19 text

HTTP Server var http = require('http'); var fs = require('fs'); http.createServer(function(req, res) { fs.readFile(__dirname + 'index.html', function(err, data) { if (err) { res.statusCode = 500; res.end(String(err)); } else { res.end(data); } }); }).listen(8000); Not

Slide 20

Slide 20 text

Streams with HTTP var http = require('http'); var fs = require('fs'); http.createServer(function(req, res) { var stream = fs.createReadStream('index.html'); stream.pipe(res); }).listen(8000); Thursday, 7 February 13

Slide 21

Slide 21 text

Gzip for Free var http = require('http'); var fs = require('fs'); var zlib = require('zlib'); http.createServer(function(req, res) { var stream = fs.createReadStream('index.html'); res.writeHead(200, { 'content-encoding': 'gzip' }); stream.pipe(zlib.createGzip()).pipe(res); }).listen(8000); Thursday, 7 February 13

Slide 22

Slide 22 text

Gzip for Free var http = require('http'); var fs = require('fs'); var zlib = require('zlib'); http.createServer(function(req, res) { var stream = fs.createReadStream('index.html'); res.writeHead(200, { 'content-encoding': 'gzip' }); stream.pipe(zlib.createGzip()).pipe(res); }).listen(8000); How

Slide 23

Slide 23 text

TO-DO: Learn

Slide 24

Slide 24 text

The End http://www.flickr.com/photos/dunechaser/6884829633/ Thursday, 7 February 13