Introduktion

Webbserverprogrammering med Node och Express

Vad är Node?

Node.js (Node) är en server. Beskrivningen på nodejs.org kräver dock sin förklaring.

As an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications.

Node är byggt på en javascriptmotor (Chromes V8) för att kunna använda Javascript på en server. Node kan fungera som en en webbserver och fyller samma roll som webbservern Apache i LAMP.

Installation och förberedelse

Den här guiden utgår från materialet kring Windows Subsystem for Linux (WSL). Den Node version som kommer att användas är 14, vilket är Nodes Long Term Support (LTS) version. För att installera version 14 av Node går det inte att köra apt install node direkt.

sudo apt update
sudo apt upgrade

sudo apt install curl dirmngr apt-transport-https lsb-release ca-certificates
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

sudo apt install nodejs

Kontrollera sedan den installerade versionen av Node, bör vara 14.x.

node --version

Med node följer Node Package Manager (npm), bör vara 6.x.

npm --version

Nästa steg är att installera Express och Express generator. Express är ett minimalistiskt ramverk för Node. Express underlättar skapandet av en webbserver med Node. Express kommer att installeras globalt på systemet, något som kräver sudo.

Kontrollera sedan att det fungerade med.

Ett första projekt

För att skapa grunden till ett webbprojekt så används Express generator.

Var alltid väldigt noga med att köra kommandon från rätt mapp. Skapa inte Git-repon eller Express-projekt i c:\

Skapa en mapp för projektet, gå in i mappen och kör Express.

Express generator skapar med detta kommando grund-strukturen för en app. Express generator körs med parametrarna view, css och git.

  • View väljer den motor (på engelska template engine), templatmotor, som Express anväder. I det här fallet väljer vi att inte använda en motor för detta. Då genereras statiska filer som default. Men vi kommer att installera och använda Nunjucks för detta.

  • Css väljer att Express ska använda sig av sass/scss för projektets stilar.

  • Git skapar en .gitignore fil i projektet för att undvika att filer som inte ska finnas på Git hamnar där(node_modules mappen bland annat).

Node-projekt kräver i allmänhet ett antal NPM-paket för att fungera. Express är inget undantag och för att slutföra installationen behöver NPM ladda ned de paket som Express kräver. Paketen för ett Node-projekt är alltid listade i filen package.json. Paketen för Express installationen är följande.

NPM installerar paket med följande kommando.

npm install skapar en fil som heter package-lock.json, filen innehåller information om alla paketen som installerats och de paket som de kräver för att fungera i sin tur. Om install-kommandot kördes utan fel (vid fel står det npm ERR!) så är servern redo.

Surfa sedan till localhost:3000. Node-servern är startad och kan besökas med värddatorns ip-adress och rätt port även från andra datorer.

Port 3000 används ofta för att komma åt en utvecklar Node-servern. Detta skiljer sig från HTTP-standardporten som är 80.

Nodemon

Nodemon är ett paket till Node som underlättar utvecklingen av projekt. Det bevakar och lyssnar efter ändringar i serverns filer. Om filerna sparas (ändras) så laddas Node om.

Uppdatera package.json.

Starta sedan servern igen.

Eslint

Visual Studio Code (vscode) kan användas tillsammans med en så kallad linter för att hitta fel och formatera kod. Eslint är en linter för Javascript. Det är väldigt praktiskt vid arbete med kod och hjälper dig som utvecklare att följa praxis och skapa kod av hög kvalité. För att kunna köra Eslint kan det behöva installeras globalt, det gör vi med -g parametern.

För att slutföra installationen av Eslint så behöver en konfigurationsfil skapas. Var noga med att vara i projektmappen när du kör kommandot.

Svara följande:

NPM kommer sedan att fråga om paketen ska installeras, välj ja.

I projektets root har Eslint skapat en fil som heter .eslintrc.js med inställningarna. Mer information kring Javascript standard style hittar du på Standardjs.

Eslintrc kan nu redigeras för att ändra inställningarna. För att till exempel ändra formateringsregler så finns de under rules. En sådan regel kan vara att visa fel när semi-kolon saknas.

Till sist så behöver du installera eslint extension (svenska tillägg) i Vscode. Extensions finns i sidomenyn.

Extensions i Vscode.

Sök efter eslint och installera följande tillägg.

Lär känna din app

Applikationens grunder är nu installerade tillsammans med ett par verktyg för att underlätta utvecklingen. Nästa steg är att titta på Express filstruktur och hur du arbetar med det. Filstrukturen i Express ser ut såhär efter installationen.

I roten finns app.js och package.json samt en del andra konfigurationsfiler. App.js är Node-serverns startpunkt. Detta föregås av att start-scriptet i package.json utgår från filen www, i bin mappen, som i sin tur ladda app.js.

App.js laddar in serverns routes från routes/ foldern. När en route laddas efter ett anrop till servern så viser de i sin tur HTML-templaten från views/ mappen. Statiska filer finns i public/ mappen, såsom css och bilder.

Routes

En route är den väg en request tar i din applikation. Användaren efterfrågar en resurs och i routen så bestämmer du vad som ska ske då.

Routerna som skapas av Express generator är index och users. Index hanterar anrop till / och users till /users. Applikationens router laddas och kopplas till en adress i app.js.

Routerna innehåller i sin tur koden för att hantera anropen. Detta system skapar struktur för koden. Koden för index-routen ser ut såhär, på Git.

En view laddas med ett så kallat middleware i app.js. Det sätter en path till views-mappen och bestämmer vilken templatmotor som ska användas. Det finns ett stort antal middleware med olika funktioner och det är en viktig del av Express. Enkelt sagt så är middleware insticksprogram som utökar Express funktion.

En egen route

För att skapa en route så kan vi redigera filen index.js i routes mappen. Kopiera GET routen för / och klistra in den efter den existerande routen. Routen vi skapar är för en GET request till /test och den svarar med text.

En till route

Routen ovan finns i index.js filen och är kopplad till / och /test. Prova nu att skapa en test router. Kopiera routes/index.js och döp om den till test.js.

Routen behöver sedan kopplas i app.js filen för att den ska kunna användas.

Prova sedan att surfa till http://localhost:3000/test, visas din nya route? Annars så behöver du felsöka detta. Har du kvar en /test route i index.js?

Last updated

Was this helpful?