nodejs - a-quick-tour-v3

36
node.js A quick tour (V3) 07.10.2010

Upload: felix-geisendoerfer

Post on 13-Jan-2015

9.426 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Nodejs - A-quick-tour-v3

node.jsA quick tour (V3)

07.10.2010

Page 2: Nodejs - A-quick-tour-v3

About

Contributor Co-founder

node.js driver node.js file uploads

Felix Geisendörfer formidable

Page 3: Nodejs - A-quick-tour-v3

Audience?

Page 4: Nodejs - A-quick-tour-v3

JavaScript?

Page 5: Nodejs - A-quick-tour-v3

What is node?

Page 6: Nodejs - A-quick-tour-v3

Server side JavaScript

$ git clone \git://github.com/ry/node.git$ cd node$ ./configure$ make install

Page 7: Nodejs - A-quick-tour-v3

Server side JavaScript

$ cat test.jsconsole.log('Hello World');

$ node test.jsHello World

Page 8: Nodejs - A-quick-tour-v3

Server side JavaScript

$ node> console.log('Hello World');Hello World>

Page 9: Nodejs - A-quick-tour-v3

Ingredients

V8

libev

http_parser

c-ares

libeio

Page 10: Nodejs - A-quick-tour-v3

Philosophy

• Just enough core-library to do I/O

• Non-blocking

• Close to the underlaying system calls

Page 12: Nodejs - A-quick-tour-v3

Concurrency Model

Page 13: Nodejs - A-quick-tour-v3

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: Nodejs - A-quick-tour-v3

Single Threaded

var a = [];function f() { a.push(1); a.push(2);}

setTimeout(f, 10);setTimeout(f, 10);

Page 15: Nodejs - A-quick-tour-v3

API Overview

Page 16: Nodejs - A-quick-tour-v3

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: Nodejs - A-quick-tour-v3

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: Nodejs - A-quick-tour-v3

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: Nodejs - A-quick-tour-v3

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: Nodejs - A-quick-tour-v3

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: Nodejs - A-quick-tour-v3

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: Nodejs - A-quick-tour-v3

And much more

• UDP

• Crypto

• Assert

• Buffer

• Script

• EcmaScript5

...

Page 23: Nodejs - A-quick-tour-v3

Suitable Applications

• Web frameworks

• Real time

• Crawlers

Page 24: Nodejs - A-quick-tour-v3

More Applications

• Process monitoring

• File uploading

• Streaming

Page 25: Nodejs - A-quick-tour-v3

Interesting projects

Page 26: Nodejs - A-quick-tour-v3

Package management

Page 27: Nodejs - A-quick-tour-v3

Web Frameworks

• Express.js (Sinatra clone)

• Fab.js (Mind-bending & awesome)

Page 28: Nodejs - A-quick-tour-v3

DOM

• jsdom

• node-htmlparser

• apricot

Page 29: Nodejs - A-quick-tour-v3

WebSockets

Socket.IO

Page 30: Nodejs - A-quick-tour-v3

Protocol parsers

• node-formidable

• node-mysql

Page 31: Nodejs - A-quick-tour-v3

....

Page 32: Nodejs - A-quick-tour-v3

Limitations

• Weak SSL support

• Weak Windows support

• 1GB Heap limit on x64 (V8)

Page 33: Nodejs - A-quick-tour-v3

Hosting

Page 35: Nodejs - A-quick-tour-v3