![Page 1: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/1.jpg)
node.jsA quick tour (V3)
07.10.2010
![Page 2: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/2.jpg)
About
Contributor Co-founder
node.js driver node.js file uploads
Felix Geisendörfer formidable
![Page 3: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/3.jpg)
Audience?
![Page 4: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/4.jpg)
JavaScript?
![Page 5: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/5.jpg)
What is node?
![Page 6: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/6.jpg)
Server side JavaScript
$ git clone \git://github.com/ry/node.git$ cd node$ ./configure$ make install
![Page 7: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/7.jpg)
Server side JavaScript
$ cat test.jsconsole.log('Hello World');
$ node test.jsHello World
![Page 8: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/8.jpg)
Server side JavaScript
$ node> console.log('Hello World');Hello World>
![Page 9: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/9.jpg)
Ingredients
V8
libev
http_parser
c-ares
libeio
![Page 10: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/10.jpg)
Philosophy
• Just enough core-library to do I/O
• Non-blocking
• Close to the underlaying system calls
![Page 11: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/11.jpg)
Benevolent Dictator For Life
Ryan Dahl
![Page 12: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/12.jpg)
Concurrency Model
![Page 13: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/13.jpg)
Non-blocking I/O
var fs = require('fs');
fs.readFile('test.txt', function(err, data) { if (err) throw err;
console.log('Read file: ', data);});
console.log('Reading file ...');
![Page 14: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/14.jpg)
Single Threaded
var a = [];function f() { a.push(1); a.push(2);}
setTimeout(f, 10);setTimeout(f, 10);
![Page 15: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/15.jpg)
API Overview
![Page 16: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/16.jpg)
CommonJS Modules$ cat hello.jsexports.world = function() { return 'Hello World';};
$ cat main.jsvar hello = require('./hello');console.log(hello.world());
$ node main.jsHello World
![Page 17: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/17.jpg)
Child processes$ cat child.jsvar cmd = 'echo hello; sleep 1; echo world;', spawn = require('child_process').spawn, child = spawn('sh', ['-c', cmd]);
child.stdout.on('data', function(chunk) { console.log(chunk.toString());});
$ node child.js"hello\n"# 1 sec delay"world\n\n"
![Page 18: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/18.jpg)
Http Server$ cat http.jsvar http = require('http');http.createServer(function(req, res) { setTimeout(function() { res.writeHead(200); res.end('Thanks for waiting!'); }, 1000);}).listen(4000);
$ curl localhost:4000# 1 sec delayThanks for waiting!
![Page 19: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/19.jpg)
Tcp Server$ cat tcp.jsvar tcp = require('tcp');tcp.createServer(function(socket) { socket.on('connect', function() { socket.write("Hi, How Are You?\n> "); }); socket.on('data', function(data) { socket.write(data); });}).listen(4000);
$ nc localhost 4000Hi, How Are You?> Great!Great!
![Page 20: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/20.jpg)
DNS
$ cat dns.jsvar dns = require('dns');dns.resolve('nodejs.org', function(err, addresses) { console.log(addresses);});
$ node dns.js[ '8.12.44.238' ]
![Page 21: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/21.jpg)
Watch File$ cat watch.jsvar fs = require('fs');fs.watchFile(__filename, function() { console.log('You changed me!'); process.exit(0);});
$ node watch.js# edit watch.jsYou changed me!
![Page 22: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/22.jpg)
And much more
• UDP
• Crypto
• Assert
• Buffer
• Script
• EcmaScript5
...
![Page 23: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/23.jpg)
Suitable Applications
• Web frameworks
• Real time
• Crawlers
![Page 24: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/24.jpg)
More Applications
• Process monitoring
• File uploading
• Streaming
![Page 25: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/25.jpg)
Interesting projects
![Page 26: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/26.jpg)
Package management
![Page 27: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/27.jpg)
Web Frameworks
• Express.js (Sinatra clone)
• Fab.js (Mind-bending & awesome)
![Page 28: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/28.jpg)
DOM
• jsdom
• node-htmlparser
• apricot
![Page 29: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/29.jpg)
WebSockets
Socket.IO
![Page 30: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/30.jpg)
Protocol parsers
• node-formidable
• node-mysql
![Page 31: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/31.jpg)
....
![Page 32: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/32.jpg)
Limitations
• Weak SSL support
• Weak Windows support
• 1GB Heap limit on x64 (V8)
![Page 33: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/33.jpg)
Hosting
![Page 35: nodefelixge.s3.amazonaws.com/10/nodejs-a-quick-tour-v3.pdf · About Contributor Co-founder node.js driver node.js file uploads Felix Geisendörfer formidable](https://reader034.vdocument.in/reader034/viewer/2022042104/5e8280456e6685189b32c73d/html5/thumbnails/35.jpg)