App Router
Mapperne i app/ bestemmer URL'en, så app/shop/page.js bliver /shop. NavLink og useNavigate blev erstattet af usePathname og useRouter.
Obligatorisk opgave · PBA Webudvikling
Fra React til Next.js.
Jeg byggede min éclair-webshop fra del 1 om til Next.js med App Router. Siderne hentes og renderes på serveren, ordren regnes ud i min egen API-route, og hvert push bliver tjekket og deployet automatisk.
Next.js · CI/CD
Samme shop, nyt framework.
I del 1 byggede jeg Eclaire shop i React og Vite: en forside med profit, en shop med éclairs fra MockAPI, en kurv og et checkout. Alle routes stod i App.jsx med React Router, og data blev hentet i browseren.
I del 2 skulle shoppen bygges om til Next.js. Jeg genbrugte mine Redux-slices og min CSS uændret, så forskellen lå i routing, data fetching og rendering. Jeg tilføjede også en produktside, /shop/[id].
Frontend og backend i samme projekt, og en beslutning for hver komponent: server eller browser.
Mapperne i app/ bestemmer URL'en, så app/shop/page.js bliver /shop. NavLink og useNavigate blev erstattet af usePathname og useRouter.
Shop-siden er en async Server Component, der henter éclairs på serveren, så browseren får en færdig side uden loading-tilstand. Kun det med hooks, Redux eller klik er Client Components.
En Route Handler modtager kurven fra checkout, afviser en tom ordre med 400, regner totalen ud på serveren og svarer med et ordrenummer (201).
En hurtig shop, der deployer sig selv.
Shop-siden er revalideret: den gemmes som statisk HTML og henter højst nye data én gang i minuttet. Så er siden hurtig, og en ny éclair i MockAPI dukker alligevel op uden et nyt deploy. Produktsiden renderes ved hvert besøg, fordi id'erne ikke kendes ved build.
Hvert push til main kører gennem mit GitHub Actions-workflow, og Vercel deployer den nye version:
Det tager jeg med: Det blev nemmere at hente data og lave routes, og jeg kunne have min egen backend i samme projekt. Men det kræver en ny tankegang at beslutte for hver komponent, om den skal køre på serveren eller i browseren.
Læg éclairs i kurven og send en ordre. Del 1 i React ligger på GitHub.