Hoppa till innehåll

Översikt

Andra kursveckan och nu ska du börja skriva kod och fortsätta gå igenom fler grundläggande begrepp. Information om veckans upplägg annonseras löpande i kursens Zulip-kanal.

Tisdagen i kursvecka 2 hölls en öppen frågestund där kursledningen gick igenom veckans upplägg och delade tips för hur du prioriterar när materialet känns tungt, och därefter besvarade inkommande frågor om allt från VS Code och GitLab till SSH-nycklar.

54:39

Kurslitteraturen är en av de delar som driver kursen framåt, men det kan vara svårt att själv strukturera upp innehållet. Vad är relevant? Vad ska jag fokusera på i kursen? De stödjande inspelningarna är gjorda för att ge detta sammanhang. Det är av yttersta vikt att du tar del av dessa!

Variabler och konstanter är några av de absolut viktigaste byggstenarna i programmering. Hur skapar du dessa och vad ska du tänka på när det kommer till namngivning?

Presentation

Reviderad

En variabel låter ett program komma ihåg ett värde genom att binda ett namn till det, och deklareras med nyckelordet let följt av namnet. let är standarden sedan ES6 (2015) — före det användes var, som ersattes eftersom det tillät variabler att läcka ut ur block, omdeklareras utan varning och läsas innan de deklarerats. Ges ingen initiering får variabeln automatiskt värdet undefined, annars kan värdet användas direkt i uttryck och ändras i efterhand.

Namngivning bör vara beskrivande och på engelska. Namn som består av flera ord skrivs med camelCasing (varje ord utom det första inleds med versal). Rekommenderade tecken är a–z, A–Z, 0–9, _ och $, men namnet får inte inledas med en siffra och får inte vara ett nyckelord eller reserverat ord (let, const, class, return med flera) — det ger annars ett syntaxfel.

En konstant fungerar som en variabel med två skillnader: den måste ges ett värde redan när den deklareras, med nyckelordet const, och det värdet kan sedan inte ändras — ett försök kastar ett TypeError. Namngivningen skiljer sig åt beroende på värdets ursprung: när värdet redan är känt när koden skrivs används SCREAMING_SNAKE_CASE (MY_FAVORITE_NUMBER), medan camelCase används när värdet istället tilldelas dynamiskt vid körning.

36:27 · Presentation (kopplad till inspelningen)

För att kunna dela upp din kod i mindre, logiska stycken så behöver du använda funktioner. Men hur fungerar detta?

Presentation

Reviderad

Redan när ett JavaScript-program startar finns inbyggda funktioner tillgängliga, som console.log och Math.min. Det finns dock inte inbyggda funktioner för allt, så förr eller senare måste du skriva egna. Att dela upp ett program i funktioner strukturerar koden, ger överblick och undviker att identisk kod upprepas — bryt aldrig mot principen DRY (Don’t Repeat Yourself).

En funktion anropas genom att skriva dess namn följt av parenteser, som alltid krävs oavsett om det finns argument eller inte. Argument är värdena som skickas med vid anropet. En funktion returnerar alltid ett värde — saknas en return-sats returneras undefined.

Det finns tre sätt att skapa en funktion. En funktionsdeklaration består av nyckelordet function, ett namn, en parameterlista och en kropp inom klammerparenteser. Ett funktionsuttryck tilldelar istället en funktion till en variabel eller konstant (använd const för att undvika att den skrivs över), och behöver inget eget namn. Sedan ES6 (2015) kan funktioner också skapas med arrow function-syntax (=>) — innehåller kroppen bara en sats kan klammerparenteser och return uteslutas, men saknar funktionen parametrar måste tomma parenteser ändå anges. Alla tre sätten beter sig likadant vad gäller anrop, argument, parametrar och returvärden.

Variabler, konstanter och parametrar som skapas inuti en funktion är lokala i den — let och const ger block scope (bara tillgängligt inom klammerparenteserna), medan var ger function scope. En parameter kan tilldelas ett standardvärde som används om inget argument skickas med vid anropet.

Jättebra att du kan dela upp din kod i funktioner, men hur gör du om du vill dela upp din kod i flera filer?

Presentation

Reviderad

När ett program växer och all kod ligger i en enda fil ökar risken för att den tappar struktur och blir svår att förändra. Genom att dela upp koden i flera filer, moduler, undviks det problemet — en modul är ett litet delprogram som kan ange vilka andra moduler den beror av, och framför allt vilken funktionalitet den erbjuder andra att använda.

Sedan ECMAScript 6 (2015) har JavaScript inbyggt stöd för moduler, så kallade ECMAScript-moduler (ES-moduler, ESM). En modul exporterar värden med nyckelordet export, och en annan modul laddar den med import — antingen som en namnrymdsimport (import * as x, importerar allt exporterat) eller en namngiven import (import { x }, importerar bara det angivna). Bara det som faktiskt exporterats kan anropas utifrån modulen.

Innan ESM var CommonJS ett av de populära modulsystemen, och används fortfarande mycket inom Node.js eftersom stödet för ESM där länge var experimentellt. CommonJS använder module.exports och require istället för export och import, men räknas idag som utdaterat till förmån för ESM. Node.js behandlar kod som CommonJS som standard — för att istället använda ES-moduler läggs fältet type med värdet "module" till i package.json, enklast skapad med npm init -y och sedan kompletterad.

npm-registret innehåller paket, och ett paket kan i sin tur innehålla flera moduler. Vilka paket en applikation använder beskrivs i package.json under dependencies och devDependencies. Paket installeras med npm install PAKETETS_NAMN och hamnar i katalogen node_modules — saknas den katalogen kan alla beroenden installeras i ett svep med npm install utan argument.

Under läsanvisningar hittar du veckans kapitel som ska läsas i kurslitteraturen. Planera upp och dela upp läsningen under veckan.

Under veckan behöver du komma igång med utvecklingsmiljön Visual Studio Code och versionshanteringsverktyget Git. Detta för att kunna genomföra de första övningsuppgifterna. Följ guiderna för detta och ta hjälp på handledningarna eller i kursens Zulip-kanal om du kör fast!

  1. Guide - Installera Visual Studio Code
  2. Guide - Git versionshantering
  3. Guide - Övningsuppgift

Kört fast? Strular Git? Problem med en övningsuppgift? Då ska du definitivt vara med på handledningen där du har möjlighet att fråga kursledning och amanuenser om vad som helst.

Campus har denna aktivitet i schemalagd sal och distans träffas i zoom och har därefter individuell handledning i Zulip.

Glöm inte att ställa frågor (i god tid) inför handledningen i formuläret:

Ä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. Det är inte omöjligt att det dyker upp några nya utmaningar på veckans fredagshäng.

Här är ett antal frågor som du kan försöka besvara och diskutera tillsammans med en AI-assistent. Tveka inte att lyfta någon av frågorna till handledningen för att fortsätta diskussionen med lärare och studiekamrater.

  1. Berätta kort om utvecklingsverktyget vscode.
  2. Berätta kort om historiken bakom vscode.
  3. Stämmer det att vscode är byggt med teknikerna HTML, CSS och JavaScript?
  4. Berätta kort om Git.
  5. Berätta kort om GitLab.
  6. Berätta kort om variabler och konstanter i JavaScript.
  7. Berätta kort om funktioner i JavaScript.
  8. Berätta kort om ESM moduler i JavaScript.
  9. Hur kan ett program “Hello World” se ut om jag bygger det med variabler, funktioner och moduler i JavaScript och sedan kör det i Node?

Här är en utskrift från hur det kan se ut när frågorna ovan diskuterats med en AI-assistent.

Här följer tips till hur du kan prioritera bland kursmaterialet för att komma igång med veckan.

  1. Börja med att installera vscode och bekanta dig med texteditorn/utvecklingsverktyget.
  2. Jobba igenom guiden med Git & GitLab och bekanta dig med de båda verktygen.
  3. Gör den första övningsuppgiften för att bekanta dig med hur man klonar ett repo och exekverar koden. Se även om du kan tjuvkika på lösningen.

Ett standardtips är alltid att titta igenom de inspelade föreläsningarna och läsanvisningarna.

CCBY