Next.js
Översikt
Next.js är ett React-ramverk för produktion. Det erbjuder hybrid statisk och server-rendering, TypeScript-stöd, smart bundling, route-prefetchning och mer – helt utan konfiguration.
Kom igång
Skapa repository från mall
Gå till fliken Tools & Deployment i din dashboard. Klicka på knappen "New Repository", välj Next.js-mallen från rullgardinsmenyn, ange ett repository-namn och en subdomän och klicka sedan på "Create Repository".
Klona ditt repository
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Installera beroenden
npm install
Starta utvecklingsservern
npm run dev
Öppna http://localhost:4200 i din webbläsare.
Bygg och pusha
npm run build
git add .
git commit -m "Initial setup"
git push origin main
Lokal utveckling med Docker
Om du inte har Node.js installerat lokalt kan du använda Docker för att köra Next.js-kommandon.
Köra kommandon 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 # Rotlayout
│ ├── page.js # Startsida
│ ├── api/ # API-rutter
│ └── [routes]/ # Dynamiska rutter
├── public/ # Statiska filer
├── components/ # React-komponenter
├── styles/ # CSS-filer
├── next.config.js # Next.js-konfiguration
├── package.json # Beroenden
└── Dockerfile # Docker-konfiguration
Vanliga uppgifter
Skapa en sida
Skapa filer i mappen app/:
// app/about/page.js
export default function AboutPage() {
return <h1>About Us</h1>;
}
Skapa en API-rutt
// 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 klientkomponenter
// 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>;
}
Användbara kommandon
npm run dev
Starta utvecklingsserver med Turbopack
npm run build
Skapa produktionsbygge
npm start
Starta produktionsserver
npm run lint
Kör ESLint
Felsökning
Hydration mismatch errors
Lösning: Säkerställ att server och klient renderar samma innehåll. Använd 'use client' för interaktiva komponenter.
useState not working
Lösning: Lägg till 'use client' överst i din fil. Server-komponenter kan inte använda hooks.
Build fails after deployment
Lösning: Kör npm run build lokalt först för att kontrollera fel innan du pushar.