Javascript on Server
V8 Chrome Javascript Engine
|Netzwerkverbindungen|>>
ereignisgesteuert: Non-Blocking-I/O
1 Thread @Eventloop
nicht CPU-belastende Aufgaben werden ausgelagert: Datei-, Datenbank-, Webservicezugriffe
nextslide
setTimeout(function(){console.log("world");},2000);console.log("hello");PHP:
echo"hello";
sleep(2); // stop: thread blockedecho"world"http://misclassblog.com/wp-content/uploads/2013/04/event-loop.jpg (src: Jeff Kunkle)
nextslide
varfs=require('fs');vardata;fs.readFile('hallo.txt',function(err,data){console.log(data);});console.log(data);//undefinednextslide
varhttp=require('http');http.createServer(function(req,res){res.write('Hallo Welt');res.end();}).listen(8000);nextslide
Weitere Aufrufe innerhalb des Callbacks, müssen selber Callbacks entgegennehmen und diese am Ende (statt return) aufrufen:
varhttp=require('http');varleseDatei=require('./leseDatei');http.createServer(function(req,res){leseDatei(function(err,data){if(err){returnres.end("Fehler: "+err);}res.end(data);});}).listen(8000);// leseDatei.jsvarfs=require('fs');module.export=function(cb){fs.readFile('hallo.txt',function(err,data){cb(err.message,data);});}nextslide
npm @node.js 0.6.3
~40000 Packages
underscore, async, express, optimist, coffee-script, uglyfy-js,
socket.io, less, grunt, mocha, browserify, passport, eventemitter2,
nodemon, node-inspector, [db-provider], [template-engine]npm install [package] -g (globale Installation)
npm install [package] --save (Projektinstallation @package.json)
npm install (installiert alle Pakete aus package.json)
npm update
nextslide
- sudo npm install express -g
- express -h
- express --ejs --css less sampleapp
- cd sampleapp
- npm install
- node app.js
nextslide
nextslide
Logging, Restart on Crash, Clustering, Monitoring, Cron, Hot Code Reload
sudo npm install pm2 -g
pm2 start app.js
pm2 stopAll
nextslide
Fragen?
Folien und Code auf http://github.com/stefpb
Quellen:
- http://www.youtube.com/watch?v=jo_B4LTHi3I (Ryan Dahl)
- http://www.youtube.com/watch?v=L0pjVcIsU6A (Jeff Kunkle)
- http://en.wikipedia.org/wiki/Nodejs
nextslide