Next.js
Overzicht
Next.js is een React-framework voor productie. Het biedt hybride statische en server-rendering, TypeScript-ondersteuning, slimme bundeling, route-prefetching en meer met nul configuratie.
Snelstart
Repository aanmaken vanuit sjabloon
Ga in je dashboard naar het tabblad Tools & Deployment. Klik op de knop "New Repository", selecteer het Next.js-sjabloon uit het dropdownmenu, voer een repository-naam en subdomein in en klik vervolgens op "Create Repository".
Je repository klonen
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Afhankelijkheden installeren
npm install
Ontwikkelingsserver starten
npm run dev
Open http://localhost:4200 in je browser.
Bouwen & pushen
npm run build
git add .
git commit -m "Initial setup"
git push origin main
Lokale ontwikkeling met Docker
Als je geen Node.js lokaal hebt geïnstalleerd, kun je Docker gebruiken om Next.js-commando's uit te voeren.
Commando's uitvoeren met Docker
# Run npm install
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm install
# Run development server
docker run --rm -v $(pwd):/app -w /app -p 4200:4200 node:lts-alpine npm run dev
# Build for production
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm run build
Projectstructuur
├── app/ # App Router (Next.js 13+)
│ ├── layout.js # Hoofdlayout
│ ├── page.js # Startpagina
│ ├── api/ # API-routes
│ └── [routes]/ # Dynamische routes
├── public/ # Statische bestanden
├── components/ # React-componenten
├── styles/ # CSS-bestanden
├── next.config.js # Next.js-configuratie
├── package.json # Afhankelijkheden
└── Dockerfile # Docker-configuratie
Veelvoorkomende taken
Een pagina aanmaken
Maak bestanden in de map app/:
// app/about/page.js
export default function AboutPage() {
return <h1>About Us</h1>;
}
Een API-route aanmaken
// app/api/users/route.js
export async function GET() {
return Response.json({ users: [] });
}
export async function POST(request) {
const data = await request.json();
return Response.json({ created: data });
}
Server- vs Client-componenten
// Server Component (default) - runs on server
export default async function Page() {
const data = await fetch('https://api.example.com');
return <div>{data}</div>;
}
// Client Component - add 'use client' directive
'use client';
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>{count}</button>;
}
Handige commando's
npm run dev
Dev-server starten met Turbopack
npm run build
Productiebuild aanmaken
npm start
Productieserver starten
npm run lint
ESLint uitvoeren
Probleemoplossing
Hydration mismatch errors
Oplossing: Zorg ervoor dat server en client dezelfde inhoud renderen. Gebruik 'use client' voor interactieve componenten.
useState not working
Oplossing: Voeg 'use client' toe bovenaan je bestand. Server-componenten kunnen geen hooks gebruiken.
Build fails after deployment
Oplossing: Voer eerst lokaal npm run build uit om op fouten te controleren voordat je pusht.