React Fundamentals โ€“ Game Collection /in ontwikkeling Les 1 โ€“ Introductie React & Ontwikkelomgeving ๐ŸŽฏ Leerdoelen Na deze les kun je: uitleggen wat React is; uitleggen waarom React wordt gebruikt; het verschil beschrijven tussen Front-end en Back-end; een nieuw React-project maken met Vite; de belangrijkste React-bestanden herkennen; je eerste React-pagina aanpassen; je project opslaan in GitHub. ๐ŸŽฎ Wat ga je bouwen? Tijdens deze module werk je aan รฉรฉn project: ๐ŸŽฎ Game Collection Je bouwt stap voor stap een moderne webapplicatie waarin gebruikers games kunnen bekijken, zoeken en beheren. Aan het einde van deze module kun je onder andere: ๐ŸŽฎ Games weergeven ๐Ÿ” Games zoeken โค๏ธ Favorieten toevoegen ๐Ÿ“„ Detailpagina's maken ๐Ÿงฉ Componenten bouwen โšก Dynamische React-applicaties ontwikkelen [Afbeelding eindresultaat Game Collection] ๐Ÿ“– Waarom React? Stel je voor dat je de Game Collection maakt met alleen HTML. Voor iedere game zou je opnieuw moeten schrijven: titel; afbeelding; platform; knop; beschrijving. Heb je 200 games? Dan schrijf je dezelfde code 200 keer. Dat is natuurlijk niet handig. React lost dit probleem op. React maakt gebruik van componenten . Een component maak je รฉรฉn keer. Daarna gebruik je hem zo vaak als je wilt. ๐Ÿ’ก Wat is React? React is een JavaScript-library waarmee je moderne gebruikersinterfaces bouwt. React is ontwikkeld door Meta (Facebook) . React wordt gebruikt door onder andere: Facebook Instagram Netflix Discord Airbnb React is tegenwoordig รฉรฉn van de meest gebruikte technieken voor Front-end ontwikkeling. ๐Ÿ› ๏ธ Benodigdheden Voor deze module heb je nodig: Visual Studio Code Node.js (LTS-versie) Git GitHub-account Controleer of alles correct is geรฏnstalleerd. Open een terminal en voer uit: node -v npm -v git --version Wanneer alle versies zichtbaar zijn, ben je klaar om te beginnen. ๐Ÿ“– Componenten Een React-applicatie bestaat uit kleine bouwstenen. Deze noemen we componenten. Onze Game Collection zou er bijvoorbeeld zo uit kunnen zien. App โ”œโ”€โ”€ Header โ”œโ”€โ”€ SearchBar โ”œโ”€โ”€ GameList โ”‚ โ”œโ”€โ”€ GameCard โ”‚ โ”œโ”€โ”€ GameCard โ”‚ โ”œโ”€โ”€ GameCard โ”‚ โ””โ”€โ”€ GameCard โ””โ”€โ”€ Footer Iedere GameCard wordt slechts รฉรฉn keer gemaakt. React hergebruikt deze component daarna automatisch. Dat scheelt enorm veel programmeerwerk. [Afbeelding componentenboom] ๐Ÿ“– Front-end versus Back-end Een webapplicatie bestaat meestal uit twee delen. Front-end Back-end Alles wat de gebruiker ziet Verwerking achter de schermen HTML Database CSS API JavaScript Server React Laravel (behandelen we in deel 2) Tijdens deze module richten we ons uitsluitend op de Front-end . In de vervolgreeks koppelen we React aan een Back-end. [Afbeelding Front-end vs Back-end] ๐Ÿ› ๏ธ Opdracht 1 โ€“ React installeren Tijdens deze module gebruiken we Vite . Vite is de officiรซle manier om een nieuw React-project te maken. Stap 1 Maak een nieuw React-project. npm create vite@latest game-collection -- --template react Which linter to use? โœ… ESLint ๐Ÿ’ก Waarom ESLint? ESLint is de meest gebruikte codecontrole voor React-projecten. Het helpt je om fouten sneller te ontdekken en zorgt ervoor dat je code volgens de gangbare React-standaarden wordt geschreven. ๐Ÿ’ก Waarom gebruiken we Vite? Om met React te kunnen werken hebben we een ontwikkelomgeving nodig. Tegenwoordig wordt bijna altijd Vite gebruikt. Vite is: Sneller, moderner, eenvoudiger, de standaard binnen nieuwe React-projecten. Daarom gebruiken wij Vite tijdens deze module. React gebruikt een techniek die Virtual DOM heet. Hierdoor wordt niet de hele pagina opnieuw opgebouwd. Alleen het onderdeel dat verandert wordt opnieuw weergegeven. Daardoor voelt een React-applicatie snel en soepel aan. Stap 2 Open het project in Visual Studio Code. Zorg ervoor dat je de juiste directory hebt geopend. Ga naar de projectmap. cd game-collection Stap 3 Installeer alle packages. npm install Stap 4 Start de ontwikkelomgeving in dien je het niet is gestart. Terminal in VScode npm run dev Je ziet nu ongeveer: > npx > create-vite game-collection --template react โ”‚ โ—‡ Which linter to use? โ”‚ ESLint โ”‚ โ—‡ Install with npm and start now? โ”‚ Yes โ”‚ โ—‡ Scaffolding project in C:\REACT-1\game-collection... โ”‚ โ—‡ Installing dependencies with npm... added 135 packages, and audited 136 packages in 8s 31 packages are looking for funding run `npm fund` for details found 0 vulnerabilities โ”‚ โ—‡ Starting dev server... > game-collection@0.0.0 dev > vite VITE v8.1.4 ready in 428 ms โžœ Local: http://localhost:5173/ โžœ Network: use --host to expose โžœ press h + enter to show help Als alles goed is zie je via de link http://localhost:5173/ย  de standaard React pagina [Screenshot React startpagina] ๐Ÿ› ๏ธ Opdracht 2 โ€“ Verken de projectstructuur React-projecten bestaan uit verschillende mappen. Zoek onderstaande bestanden en mappen op in je verkenner. | Bestand | Functie | | -------------- | ------------------------------------------ | | `src` | Hier staat bijna alle React-code | | `App.jsx` | De hoofdcomponent van de applicatie | | `main.jsx` | Startpunt van de React-app | | `public` | Afbeeldingen en andere statische bestanden | | `package.json` | Overzicht van alle packages | In deze module ga je vooral hieraan werken. ๐Ÿ› ๏ธ Opdracht 3 โ€“ Pas de eerste React-pagina aan Open: src/App.jsx Vervang de bestaande inhoud door: Vul je eigen naam, studentennummer en klas in. function App() { return ( <>

๐ŸŽฎ Game Collection

Welkom bij mijn eerste React-applicatie!

Naam: Jouw naam

Studentnummer: Jouw studentnummer

Klas: Jouw klas

); } export default App; Sla het bestand op. De browser wordt automatisch bijgewerkt. ๐Ÿ’ก Wist je dat? React past de browser automatisch aan zodra je een bestand opslaat. Dit heet Hot Reloading . Daardoor zie je direct het resultaat van je wijzigingen, zonder de pagina handmatig te verversen. ๐Ÿ’พ GitHub Nu de applicatie werkt is het tijd om de eerste werkende versie op te slaan. Open Source Control in Visual Studio Code. Maak een commit met het bericht: Les 1 - React omgeving gereed Synchroniseer daarna met GitHub. Vanaf nu maak je na iedere werkende opdracht een nieuwe commit. ๐Ÿค– AI-opdracht Gebruik ChatGPT. Prompt: Leg uit wat React is alsof je het uitlegt aan een eerstejaars mbo Software Developer. Vergelijk de uitleg met deze les. Beschrijf in maximaal 100 woorden welke uitleg jij duidelijker vond. ๐Ÿง  Kennischeck Wat is React? Waarom gebruiken veel bedrijven React? Wat is het verschil tussen Front-end en Back-end? Waarom gebruiken we Vite? Wat is de functie van App.jsx ? Wat is de functie van main.jsx ? Waarom gebruiken we GitHub tijdens deze module? ๐Ÿ“ค Inleveren Lever de volgende onderdelen in via Canvas. ๐Ÿ“ท Screenshot van de draaiende React-applicatie. ๐Ÿ“ท Screenshot van App.jsx . ๐Ÿ“ท Screenshot van de eerste GitHub-commit. ๐Ÿ“„ PDF of TXT met de antwoorden op de kennischeck. ๐Ÿ“„ De uitwerking van de AI-opdracht. Les 2 โ€“ JSX: Bouw je eerste Game Collection pagina ๐ŸŽฏ Leerdoelen Na deze les kun je: uitleggen wat JSX is; HTML schrijven in React; JSX aanpassen; CSS classes gebruiken met className ; een eenvoudige React-pagina bouwen; wijzigingen automatisch bekijken in de browser. ๐Ÿ“– Wat ga je vandaag maken? Vandaag maak je de eerste versie van jouw Game Collection . De pagina bevat straks: ๐ŸŽฎ Game Collection Welkom... Mijn favoriete games Minecraft FIFA Mario Kart Elden Ring Dat lijkt nog eenvoudig, maar je leert vandaag de belangrijkste basis van React. [Screenshot eindresultaat] ๐Ÿ“– Wat is JSX? Normaal schrijf je HTML zo:

Game Collection

React gebruikt JSX . JSX lijkt heel erg op HTML. Toch is het geen HTML. JSX is eigenlijk JavaScript waarin HTML geschreven mag worden. React zet deze JSX later automatisch om naar gewone JavaScript-code. ๐Ÿ’ก Waarom gebruikt React JSX? Met JSX kun je veel makkelijker een pagina opbouwen. Vergelijk eens. Gewone JavaScript: document.createElement(...) JSX:

Game Collection

Welke leest prettiger? Vrijwel iedere React-programmeur kiest daarom voor JSX. ๐Ÿ“– Welcome.jsx In de vorige les heb je gewerkt in: resources/js/Pages/Welcome.jsx Open dit bestand opnieuw. Je ziet iets dat lijkt op HTML. Dat is JSX. ๐Ÿ’ก Let op JSX lijkt op HTML. Maar er zijn kleine verschillen. HTML class React className HTML for React htmlFor Hier gaan we later verder op in. ๐Ÿ› ๏ธ Opdracht 1 Verander de pagina zodat deze er ongeveer zo uitziet.

๐ŸŽฎ Game Collection

Mijn favoriete games

Controleer of de browser automatisch wordt bijgewerkt. [Screenshot browser] ๐Ÿ“– Waarom verandert de browser automatisch? Misschien is het je al opgevallen. Je hoeft de browser niet opnieuw te laden. Na het opslaan zie je direct het resultaat. Dit noemen we Hot Reloading . Dat maakt React erg prettig om mee te werken. ๐Ÿ› ๏ธ Opdracht 2 Maak onder de lijst een tekst. Aantal games: 4 Het aantal hoeft nog niet automatisch te worden berekend. Dat leren we later. ๐Ÿ› ๏ธ Opdracht 3 Maak een nette opmaak. Gebruik hiervoor: h1 h2 ul li p Voeg daarna een eenvoudige CSS-class toe. className="title" Maak vervolgens zelf de CSS. [Screenshot resultaat] ๐Ÿ’พ GitHub Maak een commit. Les 2 - Eerste JSX pagina Synchroniseer daarna met GitHub. ๐Ÿค– AI-opdracht Vraag ChatGPT: Waarom gebruikt React JSX in plaats van gewone HTML? Vergelijk de uitleg met deze les. Noem vervolgens twee voordelen van JSX. ๐Ÿง  Kennischeck Wat is JSX? Is JSX hetzelfde als HTML? Waarom gebruikt React JSX? Waarom gebruiken we className ? Wat doet Hot Reloading? ๐Ÿ“ค Inleveren Screenshot van de browser. Screenshot van Welcome.jsx. Screenshot van GitHub commit. PDF met de antwoorden. Les 3 โ€“ Componenten: Bouw je eerste React-componenten ๐ŸŽฏ Leerdoelen Na deze les kun je: uitleggen wat een React-component is; componenten maken; componenten importeren; componenten gebruiken in een pagina; de React-projectstructuur begrijpen; een pagina opbouwen uit meerdere componenten. ๐Ÿ“– Wat ga je vandaag maken? Tot nu toe stond alle code in รฉรฉn bestand. Dat werkt prima voor kleine projecten. Maar stel je eens voor dat jouw Game Collection straks bestaat uit: Header Footer Zoekbalk Favorieten GameCards Detailpagina Navigatie Alles in รฉรฉn bestand zetten? Dat wordt al snel honderden regels code. Daarom gebruiken React-programmeurs componenten . Vandaag ga je jouw pagina opdelen in losse bouwstenen. Aan het einde van deze les ziet jouw project er ongeveer zo uit. resources โ””โ”€โ”€ js โ”œโ”€โ”€ Components โ”‚ Header.jsx โ”‚ Footer.jsx โ”‚ GameCard.jsx โ”‚ โ””โ”€โ”€ Pages GameCollection.jsx [Afbeelding projectstructuur] ๐Ÿ“– Wat is een component? Een component is een herbruikbaar onderdeel van een website. Je kunt het vergelijken met LEGO. Van losse LEGO-blokken bouw je een compleet huis. React werkt precies hetzelfde. Onze website bestaat straks uit kleine onderdelen. Bijvoorbeeld: Game Collection โ”‚ โ”œโ”€โ”€ Header โ”œโ”€โ”€ Zoekbalk โ”œโ”€โ”€ GameList โ”‚ โ”œโ”€โ”€ GameCard โ”‚ โ”œโ”€โ”€ GameCard โ”‚ โ”œโ”€โ”€ GameCard โ”‚ โ””โ”€โ”€ GameCard โ””โ”€โ”€ Footer Iedere GameCard wordt slechts รฉรฉn keer gemaakt. React gebruikt deze daarna zo vaak als nodig. [Afbeelding Component Tree] ๐Ÿ’ก Waarom gebruiken we componenten? Componenten hebben veel voordelen. โœ… Je schrijft minder code. โœ… Je kunt onderdelen hergebruiken. โœ… Je project blijft overzichtelijk. โœ… Je kunt eenvoudiger samenwerken. Daarom bestaat vrijwel iedere professionele React-applicatie uit componenten. ๐Ÿ“– Een professionele projectstructuur Tot nu toe werkte je in: Welcome.jsx Vanaf vandaag gaan we werken zoals professionele React-projecten zijn opgebouwd. Maak in de map: resources/js de volgende mappen aan. Components Pages [Screenshot mappenstructuur] ๐Ÿ› ๏ธ Opdracht 1 โ€“ Maak de eerste component Maak een nieuw bestand. resources/js/Components/Header.jsx Plaats hierin de volgende code. export default function Header() { return (

๐ŸŽฎ Game Collection

); } Sla het bestand op. ๐Ÿ› ๏ธ Opdracht 2 โ€“ Footer maken Maak vervolgens: Footer.jsx export default function Footer() { return ( ); } ๐Ÿ› ๏ธ Opdracht 3 โ€“ GameCard maken Maak een derde component. GameCard.jsx export default function GameCard() { return (
Minecraft
); } Nog even geduld. In de volgende lessen gaan we deze component veel slimmer maken. ๐Ÿ› ๏ธ Opdracht 4 โ€“ Nieuwe pagina maken Maak nu: resources/js/Pages/GameCollection.jsx Plaats hierin de volgende code. import Header from "../Components/Header"; import Footer from "../Components/Footer"; import GameCard from "../Components/GameCard"; export default function GameCollection() { return ( <>