Hoppa till innehåll

Översikt

Nu börjar du på allvar strukturera upp din kod på klienten genom att paketera den i komponenter! Veckans tre artiklar går igenom hur ett eget element registreras och får data utifrån, hur det får ett inkapslat inre med shadow DOM och hur en komponent organiseras i filer. Information om veckans upplägg annonseras löpande i kursens Zulip-kanal.

Tisdagen i kursvecka 10, samma dag som deadline för A3, började med frågor om bokningen av den muntliga examinationen. Därefter livekodade Mats klickräknaren steg för steg, från ett odefinierat element till en komponent med shadow DOM, attribut, lyssnare och en publik metod, medan Mikael ställde frågorna. Passet avslutades med en utblick mot ramverk och mot läsperiod två.

1:22:55

Veckans teori finns samlad i tre artiklar. Läs dem i ordning; varje artikel bygger på den föregående. Mellan den andra och den tredje bygger du själv en komponent, steg för steg.

  1. Custom elements – vad som händer när ett element registreras och uppgraderas, livscykelmetoderna och hur elementet tar emot data via attribut.

  2. Shadow DOM – hur komponenten får ett eget inkapslat träd, hur dess stilar och sidans stilar hålls isär och hur innehåll skickas in via slots.

  3. Exemplet Klickräknaren kan du forka och följa själv. Du bygger webbkomponenten <click-counter> i en enda HTML-fil, utan Vite och npm, i sju steg med facit. I DevTools ser du hur elementet uppgraderas, hur attribut och livscykelmetoder anropas och hur shadow DOM och slots fungerar, det vill säga allt från de två första artiklarna.

  4. En komponents filer – från klickräknarens enda fil till en katalog per komponent, varför klassen och registreringen ligger i olika filer och hur komponenten hittar sina egna resurser.

  5. Exemplet Klickräknaren – flera filer är samma <click-counter>, flyttad till samma filstruktur som övningsuppgifterna, med Vite. Du ser vart varje del av den enda filen tog vägen, varför klassen och registreringen ligger i olika filer, hur komponentens markup och CSS läses in med ?raw och ?inline och hur alla räknare delar på en stilmall. Exemplet avslutas med brödkod du kan utgå från när du skapar en egen komponent.

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

Under Övningsuppgifter hittar du övningsuppgifter som det är lämpligt att du arbetar med under veckan.

Inspelningarna från 2021 tar upp samma stoff som artiklarna, men är delvis inaktuella. Komponenterna i dem är organiserade på ett annat sätt än i kursens övningsuppgifter i dag. Artiklarna räcker, men vill du se genomgångarna i rörlig bild finns de kvar här. Sammanfattningar och presentationer till inspelningarna hittar du i samlingen av inspelningar för delkurs B.

Öppna videon på YouTube

20:43

Webbkomponenter – en introduktion till custom elements: mallar som strängar, namngivning och uppgradering. Motsvarar delar av artikeln Custom elements.

Öppna videon på YouTube

28:50

Webbkomponenter – filstruktur: en katalog per komponent, import.meta.url och npm-paket. Motsvarar artikeln En komponents filer.

Öppna videon på YouTube

1:21:15

Webbkomponenter – skapa custom elements: shadow DOM, livscykeln, attribut, slots och stil. Motsvarar artiklarna Custom elements och Shadow DOM.

Skicka gärna in frågor på förhand via formuläret som du når här:

Inlämning av examinationsuppgift A3 och därtill hörande muntlig examination!

Här är ett antal frågor som du kan försöka besvara och diskutera tillsammans med din 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. Förklara kortfattat grunden i webbkomponenter i JavaScript i webbläsaren. Vad händer när ett element står i HTML-koden innan customElements.define() har körts?
  2. Vad är skillnaden mellan vad jag gör i konstruktorn och i connectedCallback()? Varför får konstruktorn inte lägga till barn på elementet?
  3. Hur tar en komponent emot data via attribut? Varför måste attributnamn skrivas med gemener, och varför kan en setter för ett attributvärde tyst sluta fungera?
  4. Måste, eller bör jag, använda shadow DOM? Vilka av sidans CSS-regler når in i en komponent, och vilka gör det inte?
  5. Hur fungerar <slot>? Var finns innehållet som skickas in, i dokumentets träd eller i shadow-trädet?
  6. Varför delas en komponent upp i <namn>.js och index.js, och varför importeras HTML och CSS med ?raw och ?inline?
  7. Är webbkomponenter någon form av best practice som används ofta ute i industrin?

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

  1. Missa inte att träna på den teoretiska delen inför examinationen.
  2. När du har examinationen, se till att du har koll på alla delar i din kod. Om examinatorn frågar dig “var gör du detta” så bör du kunna hitta den delen på ett smidigt sätt och samtidigt översiktligt förklara vad koden gör i sammanhanget. Dykar man ner i detaljer så bör du kunna förklara även detta. Det är ju din kod som du själv har skrivit.
  3. Läs veckans tre artiklar när A3 är inlämnad, och följ klickräknaren mellan den andra och den tredje. Inspelningarna är frivilliga.
  4. Gör steg 8–9 i övningsuppgiften Tiny Tunes. Läs komponenten tiny-tune noga innan du skriver tiny-time; den är byggd precis som artiklarna beskriver och är den bästa förebilden du har inför examinationsuppgift B2.
CCBY