Mjukvaruutveckling

Vad är Node.js? JavaScript på serversidan

Vi förklarar med exempel Node.js händelsebaserade modell, vad det är starkt på och typiska backend-användningar som byggs med Express.js.

Aurora YazılımRedaktionen 6 min läsning
Vad är Node.js? JavaScript på serversidan
Vad är Node.js?

Node.js är en öppen källkod-körmiljö som kör JavaScript utanför webbläsaren, på servern och på datorn. Den bygger på Googles V8-motor och hanterar många samtidiga anslutningar effektivt med en händelsebaserad, icke-blockerande in- och utdatamodell. Den används ofta för API:er, realtidsapplikationer, integrationstjänster och kommandoradsverktyg.

Vad är Node.js?

För att svara på frågan vad är Node.js måste vi först rätta till en missuppfattning: Node.js är varken ett programmeringsspråk eller ett ramverk. Språket är fortfarande JavaScript; Node.js är miljön som kan köra det språket utanför webbläsaren.

I många år levde JavaScript bara i webbläsaren. Node.js, som kom 2009, flyttade Chromes JavaScript-motor V8 till servern och gav språket förmågor som att läsa filer, öppna nätverksanslutningar och nå databaser. Därmed kunde samma språk användas både i front end och back end.

npm, som följer med Node.js, ger tillgång till ett av världens största register med öppen källkod-paket. Verktyget används för att starta ett projekt, lägga till beroenden och köra skript, och gör Node.js oumbärligt inte bara för dem som skriver serverkod utan också för front end-utvecklare.

Kan du inte JavaScripts grundbegrepp än rekommenderar vi att du först tittar på artikeln vad är JavaScript; koden du skriver i Node.js använder samma syntax.

Hur fungerar den händelsebaserade modellen?

Node.js mest utmärkande drag är modellen med händelseloop (event loop). I vissa traditionella serverstrukturer startas en separat tråd för varje förfrågan, och den tråden väntar tills databasen svarar. Node.js väntar inte: den startar förfrågan, ber att få besked när svaret kommer och tar hand om andra förfrågningar under tiden.

Du kan jämföra det med en servitör på en restaurang. Servitören lämnar beställningen till köket och står inte kvar vid bordet tills maten är klar; hen tar hand om andra bord och serverar när maten är färdig. En enda servitör kan hinna med många bord i en miljö med mycket väntan.

Den modellen kallas icke-blockerande in- och utdata (non-blocking I/O). Det är det som gör Node.js effektivt i applikationer med mycket väntan, som databasfrågor, filläsning eller förfrågningar till andra tjänster.

javascriptIcke-blockerande filläsning
import { readFile } from "node:fs/promises";

console.log("1. Läsningen började");

const icerik = readFile("notlar.txt", "utf8")
  .then(metin => console.log("3. Dosya okundu:", metin.length, "karakter"));

console.log("2. Den här raden körs utan att vänta på filen");

Vad används Node.js till?

Svaret på frågan vad används Node.js till är brett, men de områden där det är starkast har en sak gemensamt: många samtidiga anslutningar och gott om väntan. Typiska användningar är:

  • REST- och GraphQL-API:er: backend-tjänster som levererar data till mobilappar och webbens front end
  • Realtidsapplikationer: livechatt, notiser, orderspårning, gemensamma arbetsytor
  • Integrationstjänster: mellanlager som flyttar data mellan marknadsplatser, frakt, betalning och bokföringssystem
  • Webhook-mottagare: endpoints som tar emot och bearbetar händelser från externa system
  • Kommandoradsverktyg och byggprocesser: utvecklarverktyg som npm och Vite körs också på Node.js
  • Rendering på serversidan: att generera sidor på servern med ramverk som Next.js

Ett scenario från verkligheten

Tänk dig ett hotellsystem: receptionens skärm, bokningsformuläret online och försäljningskanalerna måste alla se samma rumstillgänglighet. När en bokning kommer in måste de andra skärmarna uppdateras inom sekunder. Sådana omedelbara notiser är det naturliga användningsområdet för händelsebaserade servrar, som kan hålla många öppna anslutningar med små resurser.

Node.js backend och Express.js

Det mest kända hjälpverktyget i Node.js backend-utveckling är Express.js. Express är ett litet och flexibelt webbramverk som gör det enklare att hantera adresser (route), förfrågningar och svar samt mellanlager (middleware). Fastify, NestJS och Koa är andra alternativ med samma syfte.

Exemplet nedan sätter upp en enkel API-endpoint som returnerar en produktlista. I ett riktigt projekt måste datan komma från en databas och autentisering och felhantering läggas till. Vill du veta mer om själva API-begreppet går vår artikel vad är ett API igenom REST-logiken steg för steg.

bashProjektinstallation
mkdir urun-api && cd urun-api
npm init -y
npm install express
javascriptindex.js
const express = require("express");
const app = express();
app.use(express.json());

const urunler = [
  { id: 1, ad: "Olivolja" },
  { id: 2, ad: "Timjanshonung" }
];

app.get("/api/urunler", (req, res) => {
  res.json(urunler);
});

app.listen(3000, () => {
  console.log("API:et körs på http://localhost:3000");
});

Styrkor och svagheter

Som all teknik glänser Node.js i vissa uppgifter, medan det i andra inte är rätt val. Beslutet bör fattas utifrån applikationens arbetsbelastning, inte utifrån slagord.

Där det är starktDär man bör vara försiktig
Många samtidiga anslutningarBeräkningar som kräver mycket processorkraft
Realtidskommunikation (WebSocket)Långvarig bild- och videobearbetning
Ett enda språk i front end och back endAtt antalet beroenden snabbt växer
Ett mycket brett paketekosystem med npmRegelbunden uppföljning av paketsäkerhet
Snabb prototypframtagningBehov av arkitektonisk disciplin i stora projekt

Lösningar för tunga beräkningar

Uppgifter som upptar processorn länge kan lämnas över till worker threads i Node.js, en separat jobbkö eller en tjänst skriven i ett språk som passar uppgiften bättre. Då fortsätter huvudapplikationen att svara på användarnas förfrågningar.

Paketsäkerhet

npm-ekosystemet är en stor fördel, men varje beroende medför också en risk. Att välja underhållna och vanligt använda paket, regelbundet kontrollera kända sårbarheter med npm audit och ha låsfilen (package-lock.json) i versionshanteringen är grundläggande åtgärder.

Node.js i integrationer

Ett företags programvaror fungerar sällan var för sig. Webbplatsen tar emot beställningen, fraktbolaget får försändelseuppgifterna, fakturan hamnar i bokföringsprogrammet och lagret på marknadsplatsen uppdateras. Mellanlagren som flyttar data mellan de systemen passar Node.js väntetunga struktur mycket bra.

Till exempel tas en orderavisering från en extern tjänst emot i en endpoint, valideras, skrivs till databasen och vidarebefordras till berörda system. Att bygga sådana flöden på ett pålitligt sätt kräver också detaljer som omförsök, loggning och felrapportering; det svåra i integrationsarbetet är inte koden utan de här detaljerna.

Hur data flyter från beställning till leverans har vi beskrivit på våra sidor om marknadsplatsintegration och fraktintegration. Oavsett vilken teknik den skrivs i mäts en bra integration på att den tar bort manuell datainmatning.

Börja lära dig Node.js

För att börja räcker det att installera den aktuella LTS-versionen för ditt operativsystem från nodejs.org. LTS är den versionslinje som får långt stöd och rekommenderas för skarpa projekt. Efter installationen kan du verifiera versionen i terminalen med kommandona nedan.

  1. Börja med kärnämnen som modulsystemet samt fil- och sökvägshantering.
  2. Bli van vid att läsa asynkron kod med Promise och async/await.
  3. Skriv ett litet API med Express och koppla sedan en databas.
  4. Lär dig miljövariabler, felhantering och loggning.
  5. Ha din kod i versionshantering och gör commits i små steg.
bashVerifiering av installationen
node -v
npm -v

Försumma inte versionshanteringen

Att följa projektet med Git från första dagen gör det enklare att ångra en felaktig ändring och att arbeta i team. För grunderna kan du titta på vår artikel vad är Git.

Vanliga frågor

01Är Node.js ett programmeringsspråk?

Nej. Node.js är en miljö som kör JavaScript utanför webbläsaren. Språket är fortfarande JavaScript; Node.js lägger till serverfunktioner som filsystem, nätverk och processhantering.

02Node.js eller PHP, vilket är bäst?

Det finns ingen given vinnare. Node.js är bekvämt för realtids- och väntetunga uppgifter, medan PHP trivs på traditionella delade webbhotell och i mogna innehållsprojekt. Teamets kompetens och projektets underhållsplan blir ofta avgörande.

03Behövs en särskild server för Node.js?

Eftersom Node.js-applikationer körs som en ständigt pågående process behövs en server, VPS eller molnplattform som stöder det. Klassiska delade paket som bara hyser statiska filer räcker oftast inte.

04Vilka Node.js-ramverk finns förutom Express?

Fastify är prestandafokuserat, och NestJS erbjuder en skiktad, TypeScript-inriktad struktur för stora team. Koa har ett mer minimalistiskt synsätt. Valet bör göras efter projektets storlek och teamets vanor.

Node.js flyttar JavaScript till servern och gör det möjligt att bygga API:er, realtidsapplikationer och integrationslager med ett enda språk; för tunga beräkningar bör det stödjas av rätt arkitektur. Planerar du en back end eller ett dataflöde mellan system anpassat för ditt företag kan du titta på våra skräddarsydda mjukvarulösningar, och på vår integrationstjänst för kopplingar till butik och marknadsplatser.