Next.js
Oversigt
Next.js er et React-framework til produktion. Det leverer hybrid statisk og server-rendering, TypeScript-understøttelse, smart bundling, route-prefetching og mere uden konfiguration.
Kom godt i gang
Opret repository fra skabelon
Gå til fanen Tools & Deployment på dit dashboard. Klik på "New Repository", vælg Next.js-skabelonen i dropdown-menuen, indtast et repository-navn og et subdomæne, og klik på "Create Repository".
Klon dit repository
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Installer afhængigheder
npm install
Start udviklingsserver
npm run dev
Åbn http://localhost:4200 i din browser.
Build & push
npm run build
git add .
git commit -m "Initial setup"
git push origin main
Lokal udvikling med Docker
Hvis du ikke har Node.js installeret lokalt, kan du bruge Docker til at køre Next.js-kommandoer.
Kør kommandoer med 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
Projektstruktur
├── app/ # App Router (Next.js 13+)
│ ├── layout.js # Rod-layout
│ ├── page.js # Forside
│ ├── api/ # API-ruter
│ └── [routes]/ # Dynamiske ruter
├── public/ # Statiske filer
├── components/ # React-komponenter
├── styles/ # CSS-filer
├── next.config.js # Next.js-konfiguration
├── package.json # Afhængigheder
└── Dockerfile # Docker-konfiguration
Almindelige opgaver
Opret en side
Opret filer i app/-mappen:
// app/about/page.js
export default function AboutPage() {
return <h1>About Us</h1>;
}
Opret en API-rute
// 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. klient-komponenter
// 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>;
}
Nyttige kommandoer
npm run dev
Start udviklingsserver med Turbopack
npm run build
Opret produktions-build
npm start
Start produktionsserver
npm run lint
Kør ESLint
Fejlfinding
Hydration mismatch-fejl
Løsning: Sørg for at server og klient renderer det samme indhold. Brug 'use client' til interaktive komponenter.
useState virker ikke
Løsning: Tilføj 'use client' i toppen af din fil. Server Components kan ikke bruge hooks.
Build fejler efter udrulning
Løsning: Kør npm run build lokalt først for at tjekke for fejl, før du pusher.