breve introduzione a node.js

download breve introduzione a node.js

If you can't read please download the document

Transcript of breve introduzione a node.js

Un progetto di Ryan Dahl

Una presentazione di Eugenio Pombi NetMeansNet s.n.c.

Node.js

Server-side JavaScript interpreter

Scritto in C++

Event driven (non blocking I/O)

$result = mysql_query('SELECT * WHERE 1=1');

//do something

Cosa fa apache mentre vengono recuperati i dati in attesa di essere mostrati?

Aspetta...

E tiene impegnate risorse hardware nell'attesa (RAM e CPU)Apache apre un thread per ogni nuova connessione

$result = mysql_query('SELECT * WHERE 1=1');

//do something

l'intero processo si blocca durante l'attesa

Oppure

Multiple execution stacks

Questo codice implica che

db.query('SELECT * WHERE 1=1', function(result){//do something});

Questo codice permette di tornare all'event loop liberando le risorse

Event Loop

Javascript evented programming

//server.jsvar sys = require( "util" ), http = require( "http" );

http.createServer( function( request, response ) { response.writeHead( 200, {"Content-Type": "text/html"} ); response.write( "Hello World!" ); response.close();}).listen( 8080 );

sys.puts( "Server running at http://localhost:8080" );

var sys = require("util"),// [...] http, url, path, fs

http.createServer(function(request, response) { var uri = url.parse(request.url).pathname; var filename = path.join(process.cwd(), uri);

path.exists(filename, function(exists) { if(!exists) { response.writeHead(404, {"Content-Type": "text/plain"}); response.write("404 Not Found\n"); response.end(); return; }

fs.readFile(filename, "binary", function(err, file) { if(err) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(err + "\n"); response.end(); return; }

response.writeHead(200); response.write(file, "binary"); response.end(); }); });}).listen(8080);

sys.puts("Server running at http://localhost:8081/");

Cosa pu fare

Leggere cookieRicevere dati da form Ricevere dati dalla querystringGestire gli headerUploadare filesFile streamingP2P (chat e simili)[...]Sistema modulare (npm)

Framework

ExpressGeddy

TDD ready

ExpressonodeUnit

Consigli

Occhio ai tutorial con codice vecchio ;)

response.close() > response.end() var sys = require("sys") > var util = require("util")

http://nodetuts.comhttp://jsconf.eu/2009/video_nodejs_by_ryan_dahl.html

GRAZIE

Eugenio [email protected]@euxpom

[email protected]