Webbutveckling 1 · område 6 · uppgift
Projekt 5 – Moduler i din egen sajt
- 5 feb Inlämning kl 23:59 Projekt 5 – repo-länken lämnas i itslearning.
1. Uppdraget
Du ska bygga in minst två moduler ur modulbiblioteket i din egen sajt, anpassa dem så att de hör hemma där, och kunna förklara vad koden gör.
Det är inte en uppgift i att skriva JavaScript från grunden. Det är en uppgift i att läsa färdig kod, koppla in den rätt, ändra det som ska ändras – och låta bli det som inte ska ändras. Så ser det mesta av webbutveckling ut, och det är därför området är byggt så.
Sajten är samma som förut: den du byggde i Projekt 3 och som växt sedan område 2. Nu lägger den ett lager till.
2. Vilken sajt gäller det?
Samma regel som i Projekt 3, och samma två vägar.
Bygg vidare. Din sajt från Projekt 3, i samma repo. Det är vägen de flesta tar, och den som ger mest: modulerna hamnar i en sajt som redan är responsiv och tillgänglig, och du ser direkt om de passar.
Börja om. Har du ingen sajt att bygga vidare på – börja med områdets exempelsajt som förlaga, i ett nytt publikt repo. Du får mer arbete, men du hamnar inte efter. Säg till mig vilken väg du tar innan du börjar.
Båda vägarna bedöms med samma matris.
3. Modulerna
Sex finns i modulbiblioteket:
| Modul | Fil | Passar när |
|---|---|---|
| Hamburgermeny | meny.js | menyn har fler än fyra länkar |
| Mörkt läge med sparat val | morkt-lage.js | sajten har ett mörkt schema sedan område 3 |
| Filtrerbart galleri | galleri.js | du har en samling i tydliga kategorier |
| Bildkarusell | karusell.js | tre eller fler bilder hör ihop |
| Formulärvalidering | validering.js | du har ett formulär med flera fält |
| Quiz med rättning | quiz.js | besökaren kan testa sig på ditt ämne |
Välj efter vad din sajt behöver, inte efter vilken som ser enklast ut. En hamburgermeny på en sajt med tre menylänkar är en modul som gör sajten sämre, och det syns i matrisen.
Vill du använda en modul som inte finns i biblioteket: fråga mig först. Kravet är att du kan förklara varje rad i den, och det blir svårt med kod från nätet.
4. Kraven
Kryssa av allt eftersom. Kryssen sparas i din webbläsare.
Ska-krav — nivå E
Bör-krav — mot nivå C
Utmaning — mot nivå A
5. Tekniska krav
- Filstruktur:
js/i repots rot, en fil per modul. Gemener, bindestreck, inga å ä ö i filnamn. deferpå varjescript-tagg, sist ibody. Aldrig iheadutandefer.- Inget
onclickeller annat beteende i HTML-attribut. Beteende hör hemma i.js-filen – samma princip som när stilarna flyttade ut urstyle-attributen i område 3. - Ingen
innerHTMLför text som kommer utifrån. Är det text, användtextContent. - Inga bibliotek. Ingen jQuery, ingen Bootstrap, inget hämtat från en CDN. Modulerna är byggda för att klara sig utan.
- Validering: HTML hos
validator.w3.org, CSS hosjigsaw.w3.org/css-validator. Noll fel. - Två webbläsare. Testa i Chrome eller Edge, och i Firefox eller Safari. Det görs på lektion 61.
- Mobil. Öppna den publicerade adressen i telefonen innan du lämnar in.
Det här lämnas in
Repo-länken, i itslearning-uppgiften Projekt 5, senast fredag 5 februari 23:59. Repot ska vara publikt och sajten publicerad. Kontrollera adressen i ett privat fönster innan du lämnar in.
README.md är en del av inlämningen, inte ett tillägg. Det är där modulvalet, anpassningarna och – för A – jämförelsen står.
Så kan README-avsnittet se ut
Två till tre meningar per modul räcker. Det här är inte en uppsats – det är en anteckning till den som ska förstå dina val.
## Moduler
**Mörkt läge** (js/morkt-lage.js) – alla sidor.
Sajten hade redan ett mörkt färgschema från område 3, men besökaren kunde inte
välja själv. Nu går det, och valet finns kvar nästa besök. Jag bytte NYCKEL till
"cykelklubben-lage" så att den inte krockar med andra sajter.
**Filtrerbart galleri** (js/galleri.js) – turer.html.
Sidan har fjorton turer i tre kategorier, och man fick scrolla förbi allt för att
hitta en dagstur. Knapparna byggs ur data-grupp, så jag slipper uppdatera skriptet
när jag lägger till en tur.
Ändrat under ÄNDRA HÄR-zonen: i galleri.js stänger ett klick på den redan valda
knappen av filtret igen, så att man kommer tillbaka till alla turer utan att leta
efter "Alla". Två rader i filtrera().
Lägg avsnittet sist i din README.md, under det som redan står där.
6. Bedömningsmatris
| Kriterium | E | C | A |
|---|---|---|---|
| Inbyggnad | Två moduler fungerar på den publicerade sajten. Filerna ligger i js/, inkopplade med defer | Modulerna sitter där de hör hemma och stör inget annat på sidan. CSS:en är inlagd på rätt ställe i stilmallen | Sajten fungerar med JavaScript avstängt: inget tomt, inget oåtkomligt, ingen död knapp |
| Modulval | Två moduler ur biblioteket | Valet är motiverat utifrån vad sajten innehåller, och motiveringen håller | Modulerna löser ett problem sajten faktiskt hade, och du kan säga vilket |
| Anpassning | Minst en rad ändrad i ÄNDRA HÄR-zonen per modul | Texter och klassnamn hör hemma i din sajt. Minst en medveten ändring under zonen, beskriven i README.md | En modul skriven från kravlistan, efter bibliotekets regler, med en jämförelse mot originalet |
| Kodförståelse | Du vet vilken fil som gör vad | Du kan gå igenom en modul rad för rad och förklara varje del | Du kan förklara varför modulen är byggd som den är – och peka på ett val du hade gjort annorlunda |
| Kvalitet | Konsolen är tom. HTML och CSS validerar | Inget beteende i HTML-attribut, inga stilar i JavaScript, inga kvarglömda console.log | Din egen kod håller samma nivå som bibliotekets: kapsel, kontroller, attribut i stället för stilar |
| Tillgänglighet | Modulerna går att använda med mus och på mobil | Hela sajten går att nå med enbart tangentbord, fokus syns, Escape stänger det som går att stänga | Modulerna förbättrar tillgängligheten i stället för att kosta den: aria-live där något ändras, fokus som flyttas dit det ska |
E kräver alla ska-krav. C kräver E plus bör-kraven. A kräver C plus utmaningarna. Ett kriterium på hög nivå kompenserar inte ett som saknas.
7. Kom igång – de tre första sakerna
- Välj en modul och bygg in den i dag. Ta den lättaste som passar din sajt – mörkt läge eller formulärvalidering kräver minst ny HTML. Följ de fem stegen i JS-guiden avsnitt 8.
- Öppna konsolen och kontrollera att den är tom.
F12→ Console. Är den inte tom, laga det innan du går vidare. Ett fel som ligger kvar blir tre fel på fredag. - **Skriv
README.md-rubriken Moduler med en gång**, med den modul du just byggde in och på vilken sida. Två rader nu är en färdig fil på deadlinedagen.
8. Så ligger tiden
Sju arbetspass. Det är mindre än område 4 hade, och modulerna är färdiga – tiden går till inbyggnad, anpassning och test.
| Pass | Datum | Vad |
|---|---|---|
| 52 | fre 15/1 | Genomgång: vad JavaScript gör. Uppgiften delas ut |
| 53 | mån 18/1 | Genomgång: koppla in en modul. Konsolen |
| 54 | tis 19/1 | Genomgång: anpassa en modul. Vad som är säkert att ändra |
| 55 | fre 22/1 | Arbetspass. Första modulen inbyggd och fungerande |
| 56 | mån 25/1 | Arbetspass. Andra modulen |
| 57 | tis 26/1 | Arbetspass. Anpassningen: texter, klassnamn, inställningar |
| 58 | fre 29/1 | Arbetspass. Tangentbordstest och mobil |
| 59 | mån 1/2 | Arbetspass. A-spåret: skriv din egen modul |
| 60 | tis 2/2 | Arbetspass. README.md, motiveringarna |
| 61 | fre 5/2 | Sista finputs. Validering, två webbläsare. Deadline 23:59 |
| 62 | mån 8/2 | Prov 4 – läsa och anpassa kod |
Första modulen ska fungera på lektion 55
Det är uppgiftens enda hållpunkt före deadline, och den finns av ett skäl: den som inte fått igång någon modul efter tre genomgångar och ett arbetspass har fastnat på något litet – en sökväg, ett klassnamn – och det är enklare att laga på fredagen den 22:a än veckan efter.
9. Checklista innan du lämnar in
- Båda modulerna fungerar på den publicerade adressen, inte bara lokalt
- Konsolen är tom på varje sida
js/-filerna ligger i repot och har rätt namn, med små bokstäver- CSS-avsnitten är med i stilmallen
- Du har ändrat något i ÄNDRA HÄR-zonen i varje modul
- Hela sajten går att nå med Tab, och fokus syns
- Testad i två webbläsare
- Öppnad i telefonen
- HTML och CSS validerar utan fel
README.mdhar rubriken Moduler med vilka, var och varför- Allt committat och synkat, adressen fungerar i ett privat fönster
- Repo-länken inlämnad i itslearning
10. Felsökning
11 rader
| Symptom | Trolig orsak | Åtgärd |
|---|---|---|
| Ingenting händer, inget fel i konsolen | Filen hämtades aldrig | Fliken Network, ladda om, leta efter din .js-fil. 404 betyder fel sökväg |
Cannot read properties of null | Skriptet hittade inte elementet | Jämför klassnamnet i ÄNDRA HÄR-zonen med din HTML, tecken för tecken |
| Fungerar lokalt men inte på GitHub Pages | Stora och små bokstäver i filnamnet | Meny.js och meny.js är olika filer på servern |
| Modulen fungerar på en sida men inte på en annan | script-taggen saknas där | Varje sida behöver sin egen |
| Knappen syns aldrig | Skriptet kom aldrig till raden som tar bort hidden | Det finns ett fel högre upp i konsolen |
| Modulen körs två gånger | Två script-taggar för samma fil | Sök i HTML:en |
| Allt ser fel ut fast skriptet fungerar | CSS-avsnittet saknas | Kopiera 13a–13f ur exempelsajtens stil.css |
| Mörkt läge fungerar men färgerna är fel | Din sajt saknar det mörka schemat från område 3 | Bygg prefers-color-scheme först, modulen sedan |
Validatorn klagar på hidden | Den gör den inte – hidden är giltig HTML | Läs meddelandet igen, felet är något annat på raden |
| Jag vågar inte ändra i modulen | Du har git | Committa först. Går det sönder: git restore js/fil.js |
| Två moduler krockar | De gör de inte – varje modul är inkapslad | Leta efter samma id använt två gånger i din HTML |