📄
Webbserverprogrammering
  • Start
  • Utvecklarmiljö
    • Windows Subsystem for Linux
  • Teknisk orientering
    • Viktiga begrepp
  • Webbserver
    • Introduktion
    • Hur fungerar det?
    • Design - inte sĂ„ webbserver
    • Aktiv sida
    • Praxis
  • Databas
    • SQL
    • Ett exempel
    • SQL och Node
    • Databasdesign
    • CRUD Meeps
    • CRUD Filmdatabas
  • SĂ€kerhet
    • Introduktion
    • Inloggning
  • MVC
    • Model
    • Controller
    • View
  • Tester
    • Automatiserade tester
    • Testdriven utveckling
  • Containers
    • Docker
  • Laravel
    • Laravel, Nginx, Mysql
Powered by GitBook
On this page
  • Vad Ă€r Node?
  • Installation och förberedelse
  • Ett första projekt
  • Nodemon
  • Eslint
  • LĂ€r kĂ€nna din app
  • Routes
  • En egen route
  • En till route

Was this helpful?

  1. Webbserver

Introduktion

Webbserverprogrammering med Node och Express

PreviousViktiga begreppNextHur fungerar det?

Last updated 3 years ago

Was this helpful?

Vad Àr Node?

Node.js (Node) Àr en server. Beskrivningen pÄ 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 () 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 .

Installation och förberedelse

Den hÀr guiden utgÄr frÄn materialet kring . Den 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
sudo npm install -g express express-generator

Kontrollera sedan att det fungerade med.

express --help

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.

mkdir PROJEKTNAMN
cd PROJEKTNAMN
express --no-view --css sass --git

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

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.

package.json
"dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "morgan": "~1.9.1",
    "node-sass-middleware": "0.11.0"
},

NPM installerar paket med följande kommando.

npm install

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.

npm start

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.

sudo npm install -g nodemon

Uppdatera package.json.

package.json
"scripts": {
  "dev": "nodemon ./bin/www"
},

Starta sedan servern igen.

npm run dev

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.

sudo npm install -g eslint

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.

eslint --init

Svara följande:

? How would you like to use ESLint? To check syntax, find problems, and enforce code style
? What type of modules does your project use? CommonJS (require/exports)
? Which framework does your project use? None of these
? Does your project use TypeScript? No
? Where does your code run? Browser, Node
? How would you like to define a style for your project? Use a popular style guide
? Which style guide do you want to follow? Standard: https://github.com/standard/standard
? What format do you want your config file to be in? JavaScript

NPM kommer sedan att frÄga om paketen ska installeras, vÀlj ja.

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.

eslintrc.js
rules: {
  // "indent": ["error", 4],
  "semi": ["error", "always"] // fel om det saknas semikolon
}

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

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.

bin/
  www
node_modules/
public/
  images/
  javascript/
  stylesheets/
routes/
  index.js
  users.js
app.js
package.json

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.

app.js
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
// ... //
app.use('/', indexRouter);
app.use('/users', usersRouter);
routes/index.js
/* GET home page. */
router.get('/', function (req, res, next) {
  // render view med data
  res.render('index', { data: 'Data jag vill skicka till sidan' });
});

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.

routes/index.js
/* GET home page. */
router.get('/test', function (req, res, next) {
  // render view med data
  res.send('Detta Àr en ny testroute.');
});

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.

app.js
const testRouter = require('./routes/test');
...
app.use('/test', testRouter);
routes/test.js
/* GET test page. */
router.get('/', function (req, res, next) {
  res.send('Denna route finns pÄ /test/');
});

NÀsta steg Àr att installera Express och Express generator. À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.

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 för detta.

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

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

Surfa sedan till . Node-servern Àr startad och kan besökas med vÀrddatorns ip-adress och rÀtt port Àven frÄn andra datorer.

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

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Ä .

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

Express
Nunjucks
sass
.gitignore
localhost:3000
Standardjs
Git
http://localhost:3000/test
nodejs.org
Chromes V8
Windows Subsystem for Linux (WSL)
Node
Extensions i Vscode.
LAMP