Komponentdriven webbdesign
Studietips från Pär
Min pedagogiska grundidé bygger på att lära sig programmering är som ett hantverk som kräver en kombination av teoretisk input och praktisk muskelminne. För att bygga en solid grund rekommenderar jag följande metodik: Avsätt 2–4 timmar dagligen. Varva läsning i kurslitteraturen med att se de inspelade föreläsningarna för att få olika perspektiv på samma koncept. Börja med att 'skriva av' befintliga kodexempel. Det kan låta enkelt, men det tränar ögat att se detaljer och syntax som man annars missar. Gör små, kontrollerade förändringar i koden och testkör direkt. Vad händer om du ändrar en loop eller en variabeltyp? Det är i felsökningen den verkliga förståelsen föds. Skapa ett eget 'projekt' som följer dig genom kursen. Det kan vara ett system för en bilfirma, ett register för en idrottsförening eller en personlig boklista. Genom att applicera det du lärt dig på en 'verkligt' projekt får du en praktisk kompetens.
Veckoplanering
Vecka 36 - Bootstrap och javascript
Kursmaterial
- Från w3schools om Bootstrap 5 så som:
- Getting started with boostrap
- Containers
- Typography
- Colors
- Tables
- Images
- Cards
- Grids basics
- Grids examples
- W3schools quiz Välj de avsnitt ur quizzet som speglar denna veckas bootstrap's innehåll och koncept.
- Fetch api:et
- Ur kursboken som finns som gratis pdf
- Skumläsa detta för att få en överblick. Gå tillbaka till dessa kapitel och sidor när du behöver det. Tex efter att du kollat mina inspelningar och behöver mer förståelse och kunskaper.
- Kap 2 om Functions sid 24-26
- Kap 2 om Conditionals execution sid 26-28
- Kap 2 om Loops sid 28-32
- Kap 3 om Functions sid 38-43
- Kap 4 om Data structures sid 55-60, 62-63
- Kap 4 om Array loops och arrayology sid 65-68
- Kap 4 om JSON sid 75-76
- Kap 14 om Document Object Model(DOM) sid 214-215
- Kap 14 om Finding elements sid 218-219
- Kap 14 om Changing document and creating nodes sid 219-221
- Kap 14 om Attributes sid 222
- Kap 14 om Styling sid 224-225
- Kap 14 om Query Selectors sid 227
- Kap 15 om Event Handlers och Event objects sid 233-235
- Kap 15 om Default Actions objects sid 237
Att göra
- Repeterar snabbt grunder javascript genom att gör en enkel övning ur respektive kapitel 2,3,4,14,15 ur kursboken. Övningarna finns sist i varje kapitel.
- För att snabbt komma igång med bootstrap och javascript. Finn inspiration från olika recepet siter ute på nätet som tex https://www.koket.se/recept och https://www.ica.se/recept/ för att sen gör övningarna nedan med hjälp av bootstrap 5.x och javascript.
- Använd javascript samt boostraps olika typografiska klasser för text- och bakgrundsfärger för att stilisera recept hämtade från detta api: https://dummyjson.com/docs/recipes
- Använd javascript samt bootstraptabell för hämta och presentera recept från detta api: https://dummyjson.com/docs/recipes
- Använd javascript samt skapa en mer komplex layout med bootstarp där du använder gridlayout med flera rader och kolumner, cards, images för recept från detta api: https://dummyjson.com/docs/recipes
- Examination: Se kursrummet för detaljer om vad som ska göras, hur och när det ska lämnas in. I stort går det ut på att skapa en hemsida för fastighetsmäklaren Blge Estates där du använder Bootstrap 5.x och javascript. Hämta inspiration från hemsidor som Svenska fastighetsförmedling, Fastighetsbyrån, Husman Haberg, Bjurfors för att se vad som vanligtvis finns med på fastighetsmäklares hemsidor. Det mesta av datat och texterna som visas på Blge Estates hemsidas olika bootstrap komponenter ska ligga i egna json filer och läsa in från dem och presenteras. Inkludera följande Bootstrap-komponenter: Navigationsmeny (Navbar), Grid-system med kolumner, Kort (Cards), Accordion, Karusell (Carousel), Modaler (Modals), Formulär (Forms), Tooltip och javascript för att fylla dem med data/texter från egengjorda json filer med hjälp av fetch. Använd också egengjorda js klasser, lämpliga datastrukturer (array, map) samt localstorage. Deadline: Fredag vecka 40 kl17:00.
Instuderingsfrågor
- Hur många sätt finns det att deklarera variabler i JavaScript och vilka är de?
- Vad är en identifierare i JavaScript och vilka regler gäller för att namnge dem?
- Vad är skillnaden mellan en variabel deklarerad med const och en med let
- Hur definieras en JavaScript-funktion?
- Vad är skillnaden mellan funktionsparametrar och funktionsargument?
- Vad händer när JavaScript når ett return-uttalande i en funktion?
- Vad är Bootstrap?
- Vilka är de två huvudsakliga container-klasserna i Bootstrap 5?
- Vad är en fördel med att använda Bootstrap 5 från en CDN?
- Hur skapar man randiga rader i en tabell med Bootstrap 5? Hur lägger man till en hovringseffekt på tabellrader i Bootstrap 5? Hur gör man en tabell mindre i Bootstrap 5?
- Hur gör man en tabell responsiv i Bootstrap 5?
- Vad är Bootstrap 5:s grid-system byggt med?
- Hur kan man gruppera kolumner i Bootstrap 5:s grid-system?
- Vilka är de sex grid-klasserna i Bootstrap 5?
- Vad är skillnaden mellan att använda specifika kolumnklasser i bootstrap jämfört med att låta Bootstrap hantera layouten automatiskt?
- Hur kan man kontrollera hur många kolumner som ska visas bredvid varandra med Bootstrap 5?
Vecka 37-38 - Fortsättning Bootstrap och javascript
Kursmaterial
- Från w3schools om Bootstrap 5 komponenter så som:
- Navigations meny
- Accordion
- Karusell
- Modaler
- Pop over
- Toast
- W3schools quiz Välj de avsnitt ur quizzet som speglar denna veckas bootstrap's innehåll och koncept.
- Repetera ur kursboken från förra veckan
- Kap 2 om Functions sid 24-26
- Kap 2 om Conditionals execution sid 26-28
- Kap 2 om Loops sid 28-32
- Kap 3 om Functions sid 38-43
- Kap 4 om Data structures sid 55-60, 62-63
- Kap 4 om Array loops och arrayology sid 65-68
- Kap 4 om JSON sid 75-76
- Kap 14 om Document Object Model(DOM) sid 214-215
- Kap 14 om Finding elements sid 218-219
- Kap 14 om Changing document and creating nodes sid 219-221
- Kap 14 om Attributes sid 222
- Kap 14 om Styling sid 224-225
- Kap 14 om Query Selectors sid 227
- Kap 15 om Event Handlers och Event objects sid 233-235
- Kap 15 om Default Actions objects sid 237
Att göra
- Finn inspiration från olika recepet siter ute på nätet som tex https://www.koket.se/recept och https://www.ica.se/recept/ för att sen gör övningarna nedan med hjälp av bootstrap 5.x och javascript.
- Navigationsmeny: Skapa en lämplig navigationsmeny för siten 'Mina recept' och fyll den med lämpligt data från detta api: https://dummyjson.com/docs/recipes. Gör menyn responsiv så att den kollapsar till en hamburgermeny på mindre skärmar.
- Accordion: Skapa lämpliga accordions för siten 'Mina recept' och fyll den med lämpligt data från detta api: https://dummyjson.com/docs/recipes.
- Karusell: Skapa en karusell för siten 'Mina recept' och fyll den med lämpligt data från detta api: https://dummyjson.com/docs/recipes.
- Modal: Skapa modaler för siten 'Mina recept' som visa recepet när man trycker på en knappar. Fyll dem med lämpligt data från detta api: https://dummyjson.com/docs/recipes.ett recept.
- Popover: Skapa en popovers för siten 'Mina recept' som lämpligt data från detta api: https://dummyjson.com/docs/recipes när användaren hovrar över
- Toast: Skapa lämpligt toasts för siten 'Mina recept' som fylls med lämpligt data från detta api: https://dummyjson.com/docs/recipes.
- Examination: Börja kolla upp inlämningsuppgiften om fastighetsmäklarfirman Blge Estates. Deadline för inlämning Fredag vecka 40 kl17:00
Instuderingsfrågor
Vecka 39 - 40 Fortsättning Javascript egna klasser, CRUD operationer, localstorage
Kursmaterial
- Ur kursboken som finns som gratis pdf
- Kap 6 Classes sid 97-98 och Private properties sid 99-100
- Kap 6 Getters and setters sid 103-105
- Kap 10 Modules sid 161-163
- Skapa och använd klasser
- localStorage -w3schools
- localStorage - Mozillas mdn web docs
Att göra
- Bygg en webbapp med hjälp av bootstarp 5.x och javascript där användare kan hantera sina recept med hjälp av formulär, olika boostrap komponenter och lokal lagring (localStorage). Utgå från och implementera user stories nedan.
- User Story 1 – Lägg till recept. Som en användare vill jag kunna lägga till ett nytt recept så att jag kan spara det jag lagar ofta. Acceptanskriterier: Ett formulär finns med fält för: namn, ingredienser, instruktioner, kategori.Klick på “Spara recept” skapar ett nytt receptobjekt. Receptet läggs till i listan nedanför. Receptet sparas i localStorage. Det går inte att lägga till ett recept med samma namn två gånger
- User Story 2 – Visa mina sparade recept. Som en användare vill jag kunna se alla mina sparade recept så att jag kan läsa dem eller redigera dem senare. Acceptanskriterier: Alla recept som finns i localStorage visas automatiskt vid sidladdning. Varje recept visas med namn, ingredienser, instruktioner och kategori. Gränssnittet är läsbart och tydligt (använd gärna cards eller listor)
- User Story 3 – Ta bort ett recept. Som en användare vill jag kunna ta bort ett recept så att jag kan rensa gamla eller felaktiga recept. Acceptanskriterier:Varje recept har en “Ta bort”-knapp. En bekräftelse visas innan receptet raderas. Receptet tas bort från både gränssnittet och localStorage
- User Story 4 – Redigera ett recept. Som en användare vill jag kunna redigera ett befintligt recept så att jag kan rätta till eller förbättra det. Acceptanskriterier: Varje recept har en “Redigera”-knapp. När man klickar på “Redigera” fylls formuläret i med receptets data. Efter ändringar kan användaren klicka “Spara ändringar”. Det uppdaterade receptet sparas till localStorage
- User Story 5 – Filtrera recept tex efter kategori. Som en användare. vill jag kunna filtrera recepten efter kategori så att jag kan hitta det jag vill laga snabbare. Acceptanskriterier:En dropdown med kategorier (t.ex. Frukost, Lunch, Middag, Efterrätt). När man väljer en kategori visas endast recept som tillhör den “Visa alla” visar åter hela listan
- User Story 6 – Spara och hämta data via localStorage. Som en användare. vill jag att recepten sparas automatiskt i webbläsaren så att de finns kvar även om jag stänger appen. Acceptanskriterier:Alla recept sparas automatiskt i localStorage efter varje ändring. När sidan laddas läses recepten från localStorage och visas. localStorage används istället för databas
- User Story 7 – Använd modulär kodstruktur. Som en utvecklare vill jag organisera koden i moduler och klasser så att koden blir tydlig, återanvändbar och lättare att felsöka. Acceptanskriterier:En klass Recipe används för att representera ett recept. En modul RecipeModule hanterar receptdata (add, update, delete, list). En separat klass RecipeHandler ansvarar för gränssnitt och events. Alla privata fält i klasser skrivs med # och nås via getters/setters
- User Story 8 – Visa recepten med Handlebars. Som en användare vill jag att recepten visas med mallar så att layouten blir konsekvent och snygg. Acceptanskriterier: Handlebars används för att rendera receptlistan.HTML-strukturen för recepten ligger i en Handlebars-template. Efter varje förändring (lägg till, ta bort, redigera) uppdateras vyn via templaten
- Examination: Kom ihåg att börja jobba med inlämningsuppgiften om mäklarfirman Blge Estates. Deadline Fredag vecka 40 kl17:00
Instuderingsfrågor
Vecka 40 - Lämna i Blge Estates
Vecka 41-43 - Webbkomponenter
Kursmaterial
- En webbkomponent är en samling tekniker som möjliggör för utvecklare att skapa återanvändbara och isolerade komponenter för webbapplikationer. Komponenten är en JS klass i vilken det används HTML, CSS och JavaScript för att skapa komponentens layout och funktionalitet. Den kan importeras och integreras i befintliga webbsidor. Vilket gör den återanvändbara, ökar modulariteten och underlättar underhåll och utveckling av webbapplikationer.
- Webbkomponenter
- Använda webbkomponenter
Att göra
- Finn en bra förklarande video på Youtube om hur man implementerar egen webbkomponent. Gör det exemplet/en som visa i videon och få den att funka.
- Skapa en enkel webbkomponent som visar ditt namn och epostadress.
- Gör om den tidigare webbkompentent så att den har två attribut namn och epost som läser dessa två attributvärden och visar namnet och eposten
- Skapa en webbkomponent med en knapp. När den klickas på visas ett slump tal mellan 1 och 100.
- Skapa en webbkomponent med en knapp. När den klickas på visas en slumpad bild.
- Gör om min sum-calculator från föreläsningsvideon så att den får med de övriga räknesätt som subtraktion, multiplikation och division.
- Gör en webkomponent för en lånekalkylator som beräknar månadskostnaden för ett lån. Använd formel för annuitetslån, där man betalar av med samma månadskostnad hela låneperioden.
- Gör två webkomponenter en sender som dispatchar ett customevent med data som den andra webkomponent en receiver lyssnar på för att plocka ut det data och presentera det.
- Gör en egen webbkomponent som hämtar data från ett API på nätet, tex Disney api, med hjälp av fetch, async och await för att presentera det på ett snyggt sätt med hjälp av Bootstrap 5.
- Gör en egen webkomponent som presenterar brott på en karta med marker och popup med hjälp av Leaflet.js ramverket. Använd polisens API om brott.
- Gör en egen webkomponent som använder Chart.js ramverk för att presentera data i valfritt diagram. Finn eget lämpligt API, eller Covid, på nätet för att hämta data som kan presenteras i ett diagram.
- Examination: Görs som ett större projekt, ShopTilUDie, i grupp under vecka 43–44. Börja kolla redan nu. Se instruktioner i kursrummet under uppgifter. Deadline fredag vecka 44 kl17:00.
Instuderingsfrågor
- What is the purpose of Web Components?
- Why is reusing custom markup structures traditionally difficult?
- What are the three main technologies that Web Components consist of?
- What do Custom Elements enable developers to do?
- What is the Shadow DOM used for in Web Components?
- What is the first step in creating a web component?
- How do you register a new custom element?
- What method is used to attach a shadow DOM to a custom element?
- How do you define a custom element named my-custom-element?
- Which lifecycle callback is called each time the custom element is added to the document?
Vecka 44 - Projektarbete
Kursmaterial
- Jobba mer focuserat på ert projektet.
Att göra
- Examination: Kom ihåg inlämning av projektet ShopTilUDie fredag vecka 44 kl 17:00. Onlineredovisning sker vecka 45. Se instruktioner i kursrummet under uppgifter.
Instuderingsfrågor
Vecka 45 - Redovisning projektarbete
Kursmaterial
- Online redovisning av projektuppgiften. Se schemat och kursrummet för när din/er grupp har er redovisning.
Att göra
- Examination: Online redovisning av projektuppgiften. Se schemat och projektuppgiften i kursrummet för när din/er grupp har er redovisning.
Instuderingsfrågor
| PROGRAM | Digitala tjänster - program för högskoleexamen |
|---|---|
| SYFTE | Kursen behandlar tekniker inom DOM-manipulation av webbsidors struktur och funktionalitet. Du lär dig grunder i Javascript och Bootstrap. Komponentdriven webbdesign behandlas som helhet i ett projektarbete där du använder Bootstrap, Javascript och egengjorda webbkomponenter för att uppfylla designkrav. |
| KURSPLAN | Gå till kursplan hos DU |