Översikt
Denna vecka kommer vi att dyka djupare i en kär gammal vän; plattformen Node.js.
Händer i veckan
Section titled “Händer i veckan”Nu tittar vi in i Node.js och npm och tankar bakom dem. Ta tillfället i akt och förkovra dig i detaljer.
Missa inte veckans övningsuppgift “The Promising Web Scraper”. Det är nämligen startpunkten för den typ av kod du skall skriva för att lösa examinationsuppgiften A2. Övningsuppgiften har ett inspelat lösningsförslag, använd det (om du behöver) för att lösa övningsuppgiften.
“Stå-upp”-vlogg
Section titled ““Stå-upp”-vlogg”Föregående års “stå-upp”-vlogg för er som vill ha en introduktion till kursveckan.
Den här inspelningen är delad mellan de två kurserna: första delen handlar om 1DV025, andra delen — den som sammanfattas här — om 1DV026:s fjärde kursvecka.
Uppkopplingen mot den egna servern
Section titled “Uppkopplingen mot den egna servern”Förhoppningen är att alla nu har lyckats ansluta med SSH till sin egen maskin. Informationen om hur man ansluter finns i Secrets-projektet i ens grupp i GitLab. När anslutningen inte fungerar är det nästan aldrig fel på själva servern, utan på VPN-anslutningen. Felet kan vara svårt att hitta, och det försvåras av att VPN:en är konfigurerad olika beroende på plattform. Att det fungerar för en Mac-användare säger alltså inget om varför det inte fungerar på Windows. Lyckas en Windows-användare men inte en annan är det troligare något i den egna konfigurationen som spökar.
Plattformen Node.js
Section titled “Plattformen Node.js”Veckan är en normal vecka utan deadlines, och fokus ligger på Node.js. Föreläsningen är ungefär en och en halv timme och går igenom vad Node.js är, dess historia och nyckelprinciper, singeltrådade och multitrådade arkitekturer, blockerande och icke-blockerande kod, när Node.js är ett bra val och när det inte är det, samt pakethanteraren npm. Kursledningen framhåller att det är den här typen av allmänkunskap som gör vardagen som utvecklare enklare: den som vet hur verktygen fungerar under ytan står stadigare.
Namnet npm utläses ofta “Node Package Manager”, men enligt npm själva är det ingen förkortning. Kursledningen återger en skröna om att namnet valdes för att det är lätt att skriva på tangentbordet.
Äldre inspelning, nyare kod
Section titled “Äldre inspelning, nyare kod”Föreläsningen har några år på nacken. Exemplet med filläsning använder det callback-baserade
fs-paketet, men i dag finns en promise-baserad variant, fs/promises, som gör att man kan
använda async/await på samma sätt som med fetch i webbläsaren. Presentationen är uppdaterad
och markerar det äldre sättet som “old school”: bra att känna igen när man läser gammal kod, men
inget man skriver i ny kod. Prefixet node: i import fs from 'node:fs/promises' behövs inte,
men gör det lätt att se att det är ett inbyggt paket och inte ett tredjepartspaket.
När samma sak kan lösas på flera sätt frågar studenter ofta vilket sätt som är bäst. Svaret är att det beror på situationen och på ens egen kunskapsnivå. Det finns sällan ett bästa sätt, men ofta ett som är bättre. Lös uppgiften med det du kan.
Läsanvisningar
Section titled “Läsanvisningar”Det finns ungefär tio sidor att läsa i kapitel 16 i kurslitteraturen, som handlar om JavaScript på servern med Node. Kursledningen rekommenderar att ha boken kvar i bokhyllan som referens för sådant man inte gör så ofta.
Övningsuppgiften inför A2
Section titled “Övningsuppgiften inför A2”Övningsuppgiften “The Promising Web Scraper” handlar om asynkron programmering med promises och
async/await. Den har ett lösningsförslag och en inspelning. Den är strategiskt viktig:
examinationsuppgiften A2 är också en webbskrapa, som hämtar information från flera webbsidor och
sammanställer den. Uppgifterna är inte identiska, så koden kan inte lyftas rakt av, men den som
har gjort övningen har en mycket bra start. Den ger också en chans att fräscha upp hur man skriver
JavaScript som körs i en terminalmiljö, utan grafiskt gränssnitt, och att föra över det man lärt
sig om fetch från klientsidan, eftersom fetch finns i Node.js också.
Blicken framåt
Section titled “Blicken framåt”Delkurs A består av A1 och A2, och det börjar dra ihop sig inför A2. Veckorna efter denna har inga egentliga läraktiviteter, utan är avsedda för att arbeta med examinationsuppgifterna. Tanken är att man då har lärt sig tillräckligt för att ta sig vidare på egen hand.
Stödjande inspelningar
Section titled “Stödjande inspelningar”Plattformen Node.js
Section titled “Plattformen Node.js”- Inledning
- Vad är Node.js?
- Node.js - Historia
- Node.js - Nyckelprinciper
- Node.js - Särdrag
- Multitrådade webbserver-arkitekturer
- Singeltrådad eventkö-arkitektur
- Blockerande gentemot ickeblockerande
- Händelsestyrd programmering
- När använda Node.js?
- När inte använda Node.js?
- Pakethanterare
- npm - package.json
- npm - Paketversioner (semantic versioning)
- npm - package-lock.json
- npm - Ladda ner och installera paket
- npm - npx
- Avslutningen
Läsanvisningar
Section titled “Läsanvisningar”Under läsanvisningar hittar du veckans kapitel som ska läsas i kurslitteraturen. Planera upp och dela upp läsningen under veckan.
Övningar
Section titled “Övningar”Under Övningsuppgifter hittar du övningsuppgifter som det är lämpligt att du arbetar med under veckan.
Handledning
Section titled “Handledning”Skicka gärna in frågor på förhand via vårt formulär som du når här:
Utmaningar
Section titled “Utmaningar”Även denna vecka finns ett antal utmaningar att lösa för att hjälpa dig i din lärprocess. Lägg lite tid på att läsa igenom dem.
Studiefrågor
Section titled “Studiefrågor”Här är ett antal frågor som du kan försöka besvara och diskutera tillsammans med din Ai-kompis. Tveka inte att lyfta någon av frågorna till handledningen för att fortsätta diskussionen med lärare och studiekamrater.
Frågor att diskutera med din Ai-kompis
- Ge en kort historik över plattformen Node.js.
- Finns det konkurrenter eller alternativ till Node.js (jag vill koda JavaScript på servern)?
- Hur kan man karaktärisera Node.js, vilka feature har den?
- Berätta kort om pakethanteraren npm och hur den kom till och växte fram.
- Hur är npm relaterat till semantic versioning?
- Vad är npx?
Här är en utskrift från hur det såg ut när jag diskuterade ovan frågor med min Ai-kompis Ajj.
Här följer tips till hur du kan prioritera bland kursmaterialet för att komma igång med veckan.
- Titta igenom föreläsningen om Node.js.
- Plocka upp övningsuppgiften “The Promising Web Scraper”. Försök lösa den på egen hand, eller ta hjälp och stöd av det inspelade lösningsförslaget. Denna övningsuppgift är extra viktig då den förbereder dig inför examinationsuppgiften A2.