Leervragen:
https://github.com/user-attachments/assets/f73bbf96-51a6-44db-b13d-dbb1a4c05121
Everything you need to build a Svelte project, powered by create-svelte.
If you're seeing this, you've probably already done this step. Congrats!
create a new project in the current directory
npm create svelte@latest
npm create svelte@latest my-app
Once you've created a project and installed dependencies with npm install (or yarn), start a development server:
npm run dev
npm run dev -- --open
Sveltekit is een library geschreven in svelte (geoptimaliseerde html, css, js gecombineerd) gemaakt voor het ontwikkelen van websites. (snel en overzichtelijk websites)
SSR, SPA, MPA, SSG, meta framework → (svelte)kit
PE → form: enhanced is true
Sveltekit deelt code slim op de client en op de server (hydration)
De website werkt echter ook als er geen js beschikbaar is in de browser
Wij beginnen in de ssr-only mode, door client side rendering uit te zetten.
export let csr = false
https://github.com/user-attachments/assets/d4f8040b-762e-4ddf-a700-c8b995fafb9d
Feedback ontvangen squadpage zie hier en hier. Vervolgens nieuwe plannen gemaakt.
Ook heb ik feedback gegeven aan eerstejaars.
Componenten hergebruiken helpt om consistent en efficiënt te ontwerpen. Als een component op een plek wordt aangepast, wordt het overal aangepast.
In de componenten en op artboards kun je ook auto layout toepassen.
Ik wilde vanilla JavaScript in mijn Svelte-project gebruiken, maar kreeg een internal error. Ik besefte dat de JavaScript op een andere manier geschreven moest worden. Op Medium las ik over de juiste methoden hiervoor. De onMount-functie zou gebruikt moeten worden.
Progressive enhancement is een strategie in webdesign die webinhoud centraal stelt. Het maakt basisfunctionaliteit toegankelijk voor iedereen, terwijl gebruikers met moderne browsers een verbeterde versie krijgen.
Creative coding === progressive enhancement (← zou zo moeten zijn) === content first
Progressive enhancement: content first
(Dit stappenplan gebruiken voor alle SvelteKit-projecten)
Svelte heeft standaard animatie-elementen.
SvelteKit zorgt ervoor dat je requests en responses niet zelf hoeft uit te voeren, maar dat SvelteKit dit voor je doet.
Dom-elementen herkent SvelteKit niet direct; gebruik daarom onMount (een component lifecycle-functie).
Een pagina in SvelteKit is een component. Je kunt in JavaScript de CSS manipuleren (bijv. animeren met custom properties).
In de HTML kun je iets binden aan de JavaScript.
Zie ook Svelte-transitions op de officiële Svelte-site.
Project management
Epics zijn een handige manier om werk te organiseren en een hiërarchie te creëren. Het idee is om werk op te splitsen in opleverbare stukken, zodat grote projecten kunnen worden afgerond en klanten op regelmatige basis waarde krijgen. Epics helpen teams om overzicht te behouden en werk in beheersbare stukken te verdelen.
Epics kunnen worden onderverdeeld in stories. User stories zijn gerichter en beschrijven specifieke functionaliteiten of gebruikersbehoeften.
Structuur: Epic → Stories → User Stories → Taken
Het MoSCoW-model wordt gebruikt om prioriteiten te stellen tijdens projecten:
Tijdens de Planning Poker workshop hebben we als team alle taken een numerieke waarde toegekend, gebaseerd op hun moeilijkheidsgraad en geschatte duur. Dit gaf ons beter inzicht in de complexiteit van het project en de benodigde tijdsinvestering.
Vandaag heb ik een nieuw profile card design gemaakt en gebouwd.
De achtergrondafbeelding was niet zichtbaar. Dit heb ik opgelost door mijn styling naar de static map te verplaatsen. Zie de details in deze commit.
Code refactoring: Het herschrijven van code volgens best practices zoals duidelijke conventies, goede semantiek, het verwijderen van commented code, geen overbodige console.log() statements en correcte tabs.
ReadMe bestand: Belangrijke onderdelen:
Vandaag heb ik een performance- en toegankelijkheidstest uitgevoerd voor de profilecard. Dit zijn enkele resultaten:
Ik heb een nieuwe functie gemaakt die zowel de naald- als de vinylanimatie bevat. Deze worden gestart door een bestaande knop. Zie de commit voor meer informatie.
Vandaag heb ik voortgangsgesprekken gevoerd met CMD-studenten en een nieuwe Lighthouse-test uitgevoerd. Helaas is de performance gedaald van 98 naar 79 voor toegankelijkheid na de laatste merge. Zie deze link voor meer details.
Om de score te verbeteren, moeten we:
Het gebruik van JAMstack, met JavaScript en API's, maakt het mogelijk om een modulaire architectuur te implementeren. Het voordeel hiervan is dat verschillende delen van een website of webapplicatie kunnen worden gebouwd en onderhouden door verschillende teams. Dit maakt het veel eenvoudiger om websites en webapplicaties te ontwikkelen en te onderhouden.
Enkele populaire headless CMS'en zijn: Directus, Prismic en WordPress.
Site generators die je kunt gebruiken zijn: mdBook en Eleventy.
Verlies je hoofd.
Voorkeursstack:
Leervragen:
Vragen voor Marko:
Intersection Observer.
Centraal een div plaatsen:
<body> <div></div> </body>
Filteren met de Directus API:
Er is een infinite scroll plugin, een JavaScript-plugin die automatisch de volgende pagina toevoegt, zodat gebruikers niet een volledige pagina hoeven te laden. Dit laadt nieuwe content wanneer je aan het einde van de pagina komt.
Dirk: Goed gebruik van custom properties. De Read.me is niet af; alt-tekst is leeg. Er zijn nog kleine aanpassingen aan de HTML nodig.
Lotte: JavaScript-like button; vragen over dark en light mode.
Emma: Nog niet begonnen aan de tweede pagina; de eerste pagina is ook niet af. Geen JavaScript (menu); geen custom properties. Media queries in de footer gebruiken; divs in de footer omzetten naar articles en divs naar ul's.
Jannie: Goed gebruik van custom properties. Styling aanpassen is nodig; weet niet of alle CSS ook echt iets doet en gaat er nog naar kijken. Ook nog niet zo ver met de tweede pagina.
Caia: Goed gebruik van custom properties en is best ver. Nog een aantal surface plane-elementen toevoegen. Dark-mode kleuren worden in de JavaScript aangepast in plaats van in de CSS; dit moet veranderen.
Joy: Lettertype wordt niet herkend; li in de footer; surface plane nog niet af: hamburger menu. Geen custom properties en niets in de Read.me.
Jilke: Is best ver; kleine JavaScript-fout; goed gebruik van custom properties; lettertype in de body wordt vaak herhaald; Read.me is niet compleet.
Feedback van medestudenten:
Gegeven feedback:
Ontvangen feedback:
Feedback van Krijn en Charley:
Zaterdag: HTML
Zondag: CSS/JS
Hygraph biedt interessante mogelijkheden. Meer informatie vind je in dit artikel: Implement Federated Content in Hygraph and Svelte.
De structuur van SvelteKit is als volgt:
SvelteKit heeft specifieke manieren om routing af te handelen. Een sitemap kan hierbij helpen, en er zijn zowel dynamische als statische routing mogelijkheden.
Een errorpagina wordt gemaakt met de route +error.svelte. De layout.svelte fungeert als sjabloon en kan geneste layouts bevatten. De errorpagina wordt gerenderd binnen de layout, net als page.svelte, wat handig is voor het genereren van foutmeldingen.
Bij het laden van gegevens aan de serverzijde is async verplicht. Voorbeeld:
Met de volgende code kun je een variabele aan een HTML-element binden:
$: maakt iets reactive, in plaats van let.
Componenten worden in de library met een hoofdletter geschreven. Het index.js-bestand fungeert als shorthand voor je library.
In de layout kun je componenten importeren, bijvoorbeeld:
import Header from './Header.svelte';Hygraph biedt nog steeds interessante mogelijkheden en informatie.
Dieter Rams: 10 Principes van Goed Ontwerp
Een goed ontwerp is:
Creative developer met een scherp oog voor creativiteit.
Werkt met JS, XSS, WebGL, Processing, Unity, GenAI, LLM.
In de kern: code, animaties, interactiviteit.
Creëer anticipatie en verrassing; ondersteun het verhaal en zet de sfeer.
Betrek de gebruiker en los design- en technische uitdagingen op.
Conclusie
Denk aan animaties en interacties als een uitbreiding van de oorspronkelijke intenties.
Wees open-minded en vraag om feedback.
Wees bereid om veel tijd aan het proces te besteden.
Belangrijk: Niet op ID's stylen.
Afbeeldingen in het dropdownmenu kunnen ook als achtergrondafbeeldingen worden gebruikt.
Zie het artikel over SvelteKit 404-pagina's.
Een foutpagina is gemaakt.
Refactored code: Het maken van een versie-release; goede pull request strategie; componenten.
In de readme.md: changelog.
Testen kan ook worden opgenomen: performance, keyboard, screenreader, Lighthouse, kleurcontrast, WCAG, HTML validator, gebruikerstests, browsertests, device tests, linter.
Vraag wat de klant wil.
Doel:
Rollen:
Algemene opmerkingen:
Experimenteer met view transitions, tabben, dropdown die naar het canvas scrollt, en focus state. Denk aan toegankelijkheid met scroll timeline animaties en lazy loading.
Wat heb ik gedaan:
In de terminal: npm i -D @sveltejs/adapter-vercel
In svelte.config.js:
import adapter from '@sveltejs/adapter-vercel';
Door dit toe te voegen aan je project kun je Vercel-specifieke opties opgeven.
Vraag: Is deployment configuratie ook nodig?
In page.js:
In +layout.js:
Bronnen:
De taakverdeling was goed; iedereen wist wat te doen en hield elkaar op de hoogte van voortgang en obstakels. Alle taken zijn afgerond.
We moeten een beter plan ontwikkelen voor als iemand afwezig is. De planning poker is niet gedaan omdat het team niet compleet was.
In het begin vond ik het moeilijk dat we niet op hetzelfde tempo werkten. Later realiseerde ik me dat ik nog niet klaar was met mijn taak, wat leidde tot tijdsnood. Ik werkte ook aan twee dingen tegelijk, waardoor ik het overzicht verloor.
Meerdere pagina’s in SvelteKit:
Frontend fatigue
User experience // DX // Development principles → developer experience (nieuwe libraries)
de combinatie van user experience, contentmanagement-experience en developer-experience wegen mee bij de keuze voor een tech stack
Ik probeerde een lightmode te togglen, waarvan de button in een component zit en de class moet op de html of body komen te staan.
Zie commit
npm init react-app fabrique-react
cd fabrique-react
npm start → opent het project lokaal op http://localhost:3000
Wat is logica en waarom zou je het gebruiken?
Voor front-end ontwikkelaars vormt logica de basis van programmeerstructuren en gebruikersinteracties.
Het argumentatieproces
Formuleer een standpunt en selecteer argumenten
Conclusie: Je kunt nu een standpunt innemen.
Inventariseer vervolgens argumenten die voor en tegen jouw standpunt spreken. Noteer ze en ken ze eenvoudige variabelen toe (bijv. a, b, c).
Maak een argumentatieschema
Zorg ervoor dat je argumenten duidelijk en steekhoudend zijn. Het standpunt moet met overtuigende argumenten onderbouwd worden. Zet de argumenten in een argumentatieschema om overzicht te creëren.
Beoordeel de aanvaardbaarheid van de argumenten
Het argumentatieschema helpt om te bepalen of jouw onderbouwing sterk is. Stel jezelf drie vragen bij het beoordelen van de argumenten:
Werk het argumentatieschema uit
Gebruik het schema als leidraad bij het uitwerken van je argumentatie. Houd rekening met de volgende zaken:
De keuze voor een tech-stack: een combinatie van UX, DX en CMX
Bij de keuze van een tech-stack spelen verschillende factoren een rol. Zowel de gebruikerservaring (UX), de ontwikkelaarservaring (DX) als de content management ervaring (CMX) zijn van belang.
Factoren bij het kiezen van een tech-stack: