09.05.12 | kl. 08:37 | Aktuelt, Prosabladet
Programmér webserveren med Javascript
I virksomheden E-conomic, der producerer regnskabssoftware som service, er udvikler Allan Ebdrup en glad mand på denne herlige solskinsdag i marts. Han har lige løst en opgave, som var sat til en uges arbejde, på en enkelt dag. Det skyldes ikke mindst det Javascript-baserede webmiljø Node.js, som sammen med databasen MongoDB har gjort det nemmere for Allan Ebdrup og hans kolleger at udvikle en ny programmeringsflade (API) til det succesfulde økonomisystem:
– Med Node.js er du nede ved metallet. Den har næsten ikke noget framework. Det er ufatteligt velegnet til det, som vi gør, nemlig at bygge et API. Specielt når det snakker JSON, som jo er en delmængde af Javascript-sproget.
Fri for frameworks
Node.js kom til verden i 2009 og ligger lunt i svinget til at blive den næste hypede dille inden for webudvikling. Systemet bygger på den dansk-udviklede Javascript-motor V8, som ligger til grund for Googles browser Chrome. Det benyttes blandt andre af LinkedIn's mobile applikationer. Yahoo er et andet firma, som er meget interesseret i teknologien.
Javascript på serveren er ikke nogen ny ide. Microsofts ASP-miljø (før .Net) gjorde det også muligt at kode med websproget, men Node.js adskiller sig fra mange andre webmiljøer ved ikke at benytte et stort, tungt framework, som man så at sige skal programmere sig ind i.
Det betyder dog ikke, at man er tvunget til at genopfinde hjulet hele tiden. Node.js har et letvægts-framework med navnet Express, som kan hjælpe til.
Asynkron kode
Node.js benytter en asynkron programmeringsmodel. Det vil sige, at alle tidkrævende opgaver udføres ved at give en funktion, som skal udføres på resultatet, når en opgave er færdig. Den samme model bruges i mange af de nye Javascript-funktioner i HTML5 og kendes også fra andre sprog, hvor man ikke har mulighed for at sætte selvstændige tråde i verden. Ifølge folkene bag Node.js giver det bedre ydelse, da en tråd ikke skal sidde stille og vente på et svar fra for eksempel en database. Påstanden er dog ikke universelt anerkendt, men Allan Ebdrup fra E-conomic fremhæver, at ydelsen er god, som han oplever det.
– Node.js performer helt vildt flot og bruger ufattelig lidt hukommelse.
Og først og fremmest er udviklingshastigheden hurtigere end det .Net-baserede miljø, som E-conomic benytter til daglig.
Der er endnu tale om et eksperimentelt pilotprojekt, men de første erfaringer tegner lovende.
– Man kunne skifte den gamle backend ud med Node.js og Mongo i en fart. Om mandagen kunne jeg undervise de andre i Node og Mongo, og så var vi færdige halvanden uge efter.
-
Fakta
Node.js kan downloades fra Nodejs.org til Windows, Mac og Linux/Unix.
På Nodeguide.com kan man finde en begyndervejledning, som er lige til at gå til.
Frameworket Express kan byde på lidt mere, end hvad Node.js kommer med i posen. Det kan findes på Expressjs.com.
Der findes en række udviklingsværktøjer til Node.js. Jetbrains Webstorm integrerer med Node.js, og Eclipse kan benyttes sammen med Google's V8 Eclipse Debugging Plugin.
Copenhagen JS er en københavnsk Javascript-brugergruppe, som også har Node.js på agendaen. Den hører hjemme på Copenhagenjs.dk og afholder arrangementer hver torsdag.
-
Kodeeksempel
I Node.js programmeres der meget tæt på selve HTTP-protokollen. Her vises et eksempel på miljøets lidt specielle kendetegn. En HTTP-server startes med en funktion som argument. Denne funktion tager serverens aktuelle forespørgsel (request) og svar (response) som parametre. Her skrives der direkte til response-objektet. I sidste linje sættes serveren til at lytte på localhost på port 80.
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.end('<h1>Hej verden!</h1>\n');
}).listen(80, '127.0.0.1');
console.log('Server running at 127.0.0.1/');
Scriptet gemmes i en tekstfil og køres fra en konsol med kommandoen
>node server1.js
– hvis scriptfilen hedder server.js.
Den asynkrone metode i scriptet, hvor der angives en callback-funktion til et objekt, ses igen og igen i Node.js.
PRINT
1
21.05.12 | kl.11:23 | Morgan Roderick
CopenhagenJS holder fast møde den 3. torsdag hver måned. Grundet helligdag i Maj, er det den 24. i denne måned, altså om tre dage. Mødet i denne måned er hos JayWay i Malmö.