Hvorfor er Node.js så populært

Tags:    node.js v8 javascript

Har siddet og kigget på Node.js og ja det ser da smart ud og ligetil at komme i gang med. Men hvorfor er det så populært? Det jo ikke fordi den bringer noget nyt til bordet; eller?

Selvom javascript typisk kun ses i forbindelse med en browser er det langt fra noget nyt at bruge et scriptingsprog til at nemmere bruge større softwarebiblioteker.

Event-driven programmering (altså callbacks) er jo heller ikke noget nyt?

Hvorfor er det så populært? Er det en kombination af disse:
javascript som backend (igen ikke noget nyt, men ikke så udbredt for javascript).
Brug af noget Google har lavet (V8)
Hype

Det er ikke et forsøg på at være nedladende og syntes faktisk det er smart (bare ikke revolutionerende). Er virkelig nysgerrig over hvad årsagen er?

EDIT:
Ved faktisk ikke om det er populært; måske skulle title være:
"Hvorfor er der så meget hype omkring Node.js".



Indlæg senest redigeret d. 07.06.2011 19:16 af Bruger #14645
5 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 19 karma
Sorter efter stemmer Sorter efter dato
Event-driven programming er ikke just nyt, nej. Det Node bringer til bordet er en syntax alle kender, en ufatteligt fleksibel objektmodel, med Event-driven programming i højsædet.

Derudover har Node den fordel, at rigtigt meget kode kan genbruges på tværs af backend og frontend. Det forekommer nok lidt mærkeligt ved første øjekast, men det er super brugbart fx i forbindelse med at lave applikationer der kan bruges offline -- hvis du kan bruge den præcist samme modelkode til at beskrive et objekt på både serverside og clientside, så er det eneste du behøver udskifte for at understøtte både server storage og localstorage, en flad adapter.

Også er Node CommonJS-aware, hvilket betyder at du har et hav af libraries til rådighed du allerede kender og har brugt til frontend-apps i JavaScript, som du sømløst kan ploppe ind i dine serverapplikationer(fx Backbone).

Sidst men ikke mindst er det interessante ved at bruge V8 ikke at Google har lavet det, men at det er lynende hurtigt. V8 er en absurd hurtig engine, og at skrive en serverapp der tilmed er Event-driven giver dig en performance der hidtil ikke er set. Indbygget god performance sparer dig rigtigt mange penge. Ruby on Rails har EventMachine, men er stadig, bare i kraft af at eksistere, en CPU-haj.

Konklusionen må være at i sig selv bringer Node ikke særligt meget nyt til bordet -- men den tager nogle gode idéer og gør dem bedre end alle andre har gjort indtil nu.

Med Node er vi full circle. Sømløs overgang mellem frontend og backend, muligheden for at lave kommandolinieværktøjer i ren JavaScript -- og med Titanium og Adobe AIR er vi i stand til at lave smartphone- og desktopapps i JS. Det eneste JS stadig ikke kan bruges til -- og bruges mere effektivt end konkurrenterne til -- er systemprogrammering og kerneudvikling til operativsystemer.

EDIT: Jeg vil gerne lige tilføje, at jeg er forelsket i CoffeeScript: http://jashkenas.github.com/coffee-script/ -- det gør virkeligt Node-udvikling(og generelt al JS-udvikling) til den mest lyserøde regnbuevandring en programmør har oplevet nogensinde.
Fold kodeboks ind/udKode 

Love it!



Indlæg senest redigeret d. 07.06.2011 19:37 af Bruger #8223
Det jeg kan lide ved node er, at det er veldesignet.

Event driven programmering er ikke nyt, og det er non blocking IO heller ikke, men jeg har ikke før set et sprog eller library som gør ALT non blocking. Der er funktionalitet, som ikke kan gøres non blocking, men dem smider node så bare efter en thread pool, og så får man ca. det samme.

Så al brugerens kode kan udføres i én tråd og man skal derfor ikke bekymre sig om alle problemerne med tråde.

Derfor er node meget IO og backend venligt fra start. Jeg har lavet noget lignende til Java, som vi bruger på arbejdet. Et IO loop som håndterer alt non blocking IO, en thread pool som tager sig af blokkerende IO, en tråd som håndterer timere, og en tråd, som håndterer spilprogrammørernes kode. Det har taget meget lang tid at lave og finpudse...men node leverer det samme. Gratis!

Til gengæld er node ikke velegnet til CPU intensive opgaver.



CoffeeScript er ulækkert nærmest sukkersødt, kan personligt ikke tage den nærmest Ruby agtige syntax, men hver sin smag.
Udover det synes jeg at Per har fat i rigtig meget af det samme som jeg elsker ved Node.
CommonJS er ikke et fastlagt spec., men med package managers som NPM, er modulær programmering blevet en leg, hvor dependicies bliver løst uden problemer.

Jeg har faktisk endnu ikke stået i en situation hvor jeg har haft brug for server/client code reuse, da jeg hovedsagligt har arbejdet på API's og server database handling, som Node er uovertruffent til at udvikle.



Super tak for det fantastiske svar.

Ja kan godt se geniale i at have frontend og backend i samme sprog.

CommonJS ser også rigtig godt ud. Men det ser også meget lille ud? På siden er der 4 standarder, hvoraf kun 1 kan har et link, og alt den hovedsageligt siger er at man skal smide exporteret funktionalitet i en variabel kaldet exports og par andre regler for moduler.

CoffeeScript må jeg helt klar få prøvet engang; det ligner utroligt meget sådan JavaScript skulle have set ud :)



Indlæg senest redigeret d. 07.06.2011 21:35 af Bruger #14645
Tak for de nye svar også :).

Har også været godt igang med diverse Google søgninger og Node.js er hvertfald noget jeg vil overveje når jeg skal lave en web applikation fremover (eller keder mig en dag ;).




Indlæg senest redigeret d. 08.06.2011 21:28 af Bruger #14645
t