breve introduzione a node.js
-
Upload
eugenio-pombi -
Category
Technology
-
view
1.297 -
download
1
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