Introduktion till Node.js

Vad är Node.js?

Node.js (kallas oftast ”Node”, rätt och slätt) är i grunden ett program som kan köra din Javascript-kod från kommandoraden – utan en webbläsare. Node.js gör det också möjligt att använda nätverket och filsystemet från Javascript mycket bättre än vad som är möjligt i dagens webbläsare.

I praktiken används Node.js mest som en webbserver, men det är egentligen bara ett av många möjliga användningsområden (men också det som Node.js-folket själva framhåller mest).

Ett av målen med Node.js är att det ska vara skalbart och alltså kunna hantera väldigt många samtidiga besökare på exempelvis en webbtjänst (men det är kanske inte riktigt så enkelt som att Node.js löser alla problem med skalbarhet).

Något som kan vara värt att tänka på är att med Node.js kommer du närmare hårdvaran än med exempelvis PHP på Apache. Node.js är alltså inte en högre abstraktionsnivå utan en lägre – vilket ger större flexibilitet men också mer komplexitet.

Installation

Du kan installera Node.js på flera olika sätt, men det enklaste är via en pakethanterare. I Ubuntu kan du använda apt för att installera Node.js:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get install nodejs

npm

Node Package Manager (förkortas npm) är en pakethanterare för Node.js, ungefär som PEAR för PHP, RubyGems för Ruby eller pip för Python. Npm gör det enkelt att installera moduler som du behöver.

Det enkla sättet att installera npm på:

$ curl http://npmjs.org/install.sh | sudo sh

”Hello, world!”

Skapa en fil helloworld.js och skriv in denna kodrad:

console.log('Hello, world!');

Kör det sedan från kommandoraden med detta kommando:

$ node helloworld

Enkelt!

Webbserver

En introduktion till Node.js måste förstås inkludera en enkel webbserver också. För att göra det enkelt för oss använder vi modulen Express istället för att använda den råa, inbyggda http-modulen.

$ npm install express

Skapa sedan en textfil, exempelvis webserver.js och skriv lite kod:

var app = require('express').createServer();

app.get('/', function(req, res){
    res.send('Hello, world!');
});

app.listen(3000);

Funktionen require() läser in modulen och createServer() skapar ett server-objekt som vi kallar ”app”. Genom att anropa metoder såsom get() och post() på app, talar vi om för objektet vad som ska hända när en viss URL på servern anropas. Det blir alltså ett slags router eller front controller.

Argumenten req och res står för request och response. req innehåller allt du behöver veta om anropet, och res är objektet som ska returneras till webbläsaren när du är färdig.

Metoden listen() säger sedan åt Node.js att vi vill lyssna på port 3000 och hantera alla http-anrop som kommer in där. Servern kommer fortsätta att lyssna tills du stänger av Node.js (ex. med Ctrl+C) eller tills något undantag eller fel inträffar.

Testkör servern exempelvis så här:

$ node webserver &
$ curl localhost:3000
$ killall node

Läs mer

Jag hoppas att du har lärt dig grunderna i Node.js, men naturligtvis finns det massor att upptäcka och lära sig: