+ MENY
2012 nov 12
3

Node.js – Javascript på servern

Den senaste tiden har jag läst allt mer om node.js när jag har surfat runt på diverse olika sajter skrivna av utvecklare. Till slut blev nyfikenheten för stor och jag bestämde mig för att testa på detta själv.

Jag har ju tidigare utvecklat en del i javascript och framförallt jQuery och känner mig relativt van med koden kring detta så det var nog också en anledningen till att jag ville veta mer.

Kortfattat – Vad är egentligen node.js?

Att ge sig på en kortfattad förklaring om node.js kanske jag som nybörjare (vilket jag är på detta område) egentligen borde undvika. Men jag försöker ändå. Här handlar det om att skaparen till Ryan Dahl har haft ett önskemål om att bygga en server som på bästa sätt är anpassad till realtids applikationer (tänk chat, google docs, rita tillsammans, onlinespel).

Det här görs framförallt genom att hela tiden skriva asynkron kod och framförallt asynkrona funktioner. För dig som tycker att detta låter som mumbojumbo så handlar det hela tiden om att när du gör en aktivitet i ditt ”program” så låser du inte upp programmet utan tillåter att andra aktiveteter sker samtidigt. Perfekt för realtidsapplikationer helt enkelt.

Node.js är i alla fall en server som är byggd ovanpå ett block med C och googles javascript tolkare som heter V8 (är open source). Så det är helt enkelt javascript på servern med viss modifikation. När man själv gör appar med node.js så är det i stort sett bara javascript som kodas (förutom html/css).

Vad kan du göra i Node.js

Node har funnits ett tag nu och det har hunnit byggas en hel del i detta. Bland det mest kända är att det är en del av Linkedins senaste app där node sköter mycket av kommunikationen. Med tiden har det också utvecklats en hel del så kallade moduler som är mycket användbara. Med en modul i node menas att du kan ladda ner ett färdigt bibliotek som förenklar och effektiviserar vissa saker som annars tar lång tid att koda själv. Det här gör att du snabbare och enklare kan gå från idé till färdig applikation. Några sådan moduler som jag själv har använt och tycker är rätt fantastiska är:

  • Mongoose – Fungerar som ett lager mellan databasen mongodb (dokumentbaserad/nosql) och din server.
  • Socket.io – Helt fantistisk modul för att hantera websockets. Dvs kommunikation mellan klient (t.ex webbläsaren) – servern- annan klient.
  • async – Det är lätt att bli aningen förvirrad bland asynkrona funktioner när man själv inte är van vid detta. Async har hjälpt mig att hålla koll på saker och ting.
  • Express.js – Här är vi så nära ett ramverk man kan komma för tillfället för att skapa hela webbplatser. Innehåller det mesta för att helt enkelt bygga en hel hemsida ovanpå node.js.
Alla dessa bibliotek laddar du ner och installerar genom det utmärkta verktyget npm (node packet manager) som ingår i installationsfilen för node.

En liten utvärdering från mig

Nu har jag inte kommit så långt att jag lagt upp någon nodejs app live ännu men jag har lokalt lyckats få till ett antal olika applikationer varav de klassiska som hello world server, chatserver, ngn google docs liknande applikation och lite annat. Hittills så tycker jag själv att de två största utmaningarna har varit att dels förstå hur man överhuvudtaget skall komma igång samt att komma över den asynkrona kullen. Nu skall jag även försöka att få till en komplett medlemsbaserat ramverk som kan användas till framtida utveckling.

Hittills har jag tyckt att det, förutom ovan nämnda saker, har varit väldigt kul, inspirerande och användbart att dyka ner i node.js.

Har du själv gjort något i detta?

3 Kommentarer

  1. Joel Mandell skriver:

    Har inte gjort något ännu i detta men skall börja :=)
    Hur går det med ramverket?

    • Simon skriver:

      Ramverket blev egentligen helt klart men jag har inte haft någon anledning att lägga upp något med det ännu. Men autentisering, db koppling till mongodb och sådant blev klart. Just nu så väntar jag på att det skall bli ett bredare stöd för websockets på serversidan (använder nginx) för att jag skall våga ta det till produktion.

  2. Jonatan Nyqvist skriver:

    Nu har inlägget några år på nacken, men jag skulle vilja förtydliga för de som läser det är i fortsättningen att asynkront INTE är lika med ”flera aktiveteter sker samtidigt”. =)

    Hos javascript (och jag tänker främst på jquery som använder begreppet mycket) betyder asynkront inte att olika delar av koden körs samtidigt på något vis, utan snarare omlott.
    När man ber jQuery göra exempelvis ett ajax-anrop görs det senare, vilket gör att det upplevs som att det sker samtidigt.

    Om saker faktiskt ska ske samtidigt behöver det vara flera trådar (och dessutom flera processorkärnor), vilket javascript inte har stöd för idag.

Comment