Introduksjon til Node.js og npm

2015-11-21 12:10:00+01:00

JavaScript ble for lenge siden lagd som et scriptspråk for manipulering av html-dokumenter, men med tiden har det utviklet seg til å brukes også på andre arenaer. JavaScript-implementasjonen Node.js som kjøres på server-siden og pakke-manageren npm har gjort JavaScript til et verdifullt verktøy for webutviklere.

Kort om Node.js og historien

Node.js er en implementasjon av JavaScript som bruker Google sin JavaScript-motor V8. JavaScript eller ikke på serveren er smak og behag, men Node.js bringer unektelig med seg et par unike fordeler. I tillegg til å gjøre JavaScript tilgjengelig på serveren muliggjøre dette å bruke samme kode på serveren som i nettleseren, noe som kan være en stor fordel til moderne app-lignende nettsider. Node.js har også en asynkron API for input/output så det er svært godt egnet til å håndtere mange forespørsler.

Introduksjon til npm

npm er en pakke-manager for Node.js som er svært utbredt og enkel i bruk. Det aller meste av Node.js-biblioteker kan installeres kjapt og enkelt med npm. Dette er en viktig årsak til at Node.js-biblioteker også brukes til mye annet enn Node.js-applikasjoner. npm følger normalt med en Node.js-installasjon. Se eventuelt https://www.npmjs.com/ hvis du vi vite mer.

Installasjon av biblioteker med npm

Med npm kan du velge mellom å installere en pakke til et spesifikt prosjekt, eller globalt. For dette er det best å bruke din kommandolinje og opprette en ny katalgo som du går inn i. F.eks. så kan vi installere underscore som er et bibliotek for funksjonell programmering.

npm install underscore

Et annet nyttig verktøy er gulp. Dette er en oppgavebehandler (task runner) som du gjerne vil ha installert globalt.

npm install -g gulp

Dette kan muligens feile fordi npm vil installere gulp i en systemkatalog som du må ha root-tilgang for å endre ( evt. sudo). Det anbefales å ikke bruke root/sudo og med litt endring av konfigurasjonsfiler får du til det.

Legg opp til global installasjon av npm-pakker uten sudo

For å unngå at globale pakker må installeres som root kan du gjøre følgende:

1: Opprett katalogen .npm-packages

mkdir "${HOME}/.npm-packages"

2: Legge til følgende i sin .bashrc/.zshrc

NPM_PACKAGES="${HOME}/.npm-packages"
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
PATH="$NPM_PACKAGES/bin:$PATH"
# Unset manpath so we can inherit from /etc/manpath via the `manpath`
# command
unset MANPATH # delete if you already modified MANPATH elsewhere in your config
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

3: Legg til følgende i $HOME/.npmrc (opprett .npmrc-fila hvis den ikke finnes):

prefix=${HOME}/.npm-packages

Instruksjonene er hentet fra https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md og der finner du mer utfyllende kommentarer.

Om package.json

npm vil bruke en package.json-fil for å håndtere biblioteker og versjoner du bruker. Dette gjør det enklere å holde orden på bibliotekene du bruker, også for eventuelle andre du distribuerer prosjektet ditt til. En enkel

npm install

vil deretter lese av package.json og installere alt det nødvendige. Du kan vedlikeholde package.json manuelt, men det er også mulig å oppdatere den automatisk når du installerer nye pakker. Hvis det ikke finnes noen slik fil i roten av prosjektkatalogen din, kjør kommandoen

npm init

Du kan eventuelt opprette fila package.json selv og legg inn '{}' i den (uten '', dette er det mest mininale json-dokumentet du kan lage). Deretter kan du kjøre følgende kommandoer

npm install underscore --save
npm install pm2 --save-dev

--save vil installere underscore som en avhengighet som behøves for å kjøre applikasjonen din, --save-dev er for biblioteker som behøves for å utvikle applikasjonen. Som en test så kan du opprette en ny mappe et annet sted og kopiere package.json dit. Gå så til den nye mappa og kjør kommandoen npm install. Da vil underscore og pm2 automatisk bli lastet ned og installert der.

Kort eksempel på en Node.js-server

Det er fort gjort å opprette en Node.js-server som kan være begynnelsen på din neste webapplikasjon. Legg følgende kode inn i en fil du kaller app.js

var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8080, "127.0.0.1");
console.log('Server started at http://127.0.0.1:8080');

Nå kan du kjøre følgende kommando

node app.js

Deretter kan du åpne nettleseren din med adressen http://127.0.0.1:8080 og se at serveren svarer med teksten 'Hello world'.

Linker til aktuelle sider og prosjekter for Node.js-utviklere

  • Node.js Det offisielle nettstedet til Node.js-prosjektet.
  • Express er et populært rammeverk for å lage webapplikasjoner med Node.js (og er igjen en del av MEAN.JS)
  • Gulp En oppgavebehandler som hjelper deg med å sette opp en mest mulig effektiv arbeidsflyt i dine utviklingsprosjekter.
  • Metalsmith En generator for statiske nettsteder (tilsvarer Pelican som nåværende versjon av Webutvikler.info er bygd med).
  • package.json - an interactive guide
Real Time Analytics