Next.js
Descripción general
Next.js es un framework de React para producción. Ofrece renderizado híbrido estático y de servidor, soporte para TypeScript, empaquetado inteligente, prefetch de rutas y mucho más, todo sin configuración previa.
Inicio rápido
Crear repositorio desde plantilla
En tu panel, ve a la pestaña Tools & Deployment. Haz clic en el botón "New Repository", selecciona la plantilla de Next.js del menú desplegable, introduce un nombre de repositorio y un subdominio, y luego haz clic en "Create Repository".
Clona tu repositorio
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Instala las dependencias
npm install
Inicia el servidor de desarrollo
npm run dev
Abre http://localhost:4200 en tu navegador.
Compila y haz push
npm run build
git add .
git commit -m "Initial setup"
git push origin main
Desarrollo local con Docker
Si no tienes Node.js instalado localmente, puedes usar Docker para ejecutar comandos de Next.js.
Ejecutar comandos con 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
Estructura del proyecto
├── app/ # App Router (Next.js 13+)
│ ├── layout.js # Layout raíz
│ ├── page.js # Página de inicio
│ ├── api/ # Rutas de API
│ └── [routes]/ # Rutas dinámicas
├── public/ # Archivos estáticos
├── components/ # Componentes React
├── styles/ # Archivos CSS
├── next.config.js # Configuración de Next.js
├── package.json # Dependencias
└── Dockerfile # Configuración Docker
Tareas comunes
Crear una página
Crea archivos en el directorio app/:
// app/about/page.js
export default function AboutPage() {
return <h1>About Us</h1>;
}
Crear una ruta de API
// 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 Components
// 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>;
}
Comandos útiles
npm run dev
Iniciar el servidor de desarrollo con Turbopack
npm run build
Crear build de producción
npm start
Iniciar el servidor de producción
npm run lint
Ejecutar ESLint
Resolución de problemas
Errores de hidratación
Solución: Asegúrate de que el servidor y el cliente renderizan el mismo contenido. Usa 'use client' para componentes interactivos.
useState no funciona
Solución: Añade 'use client' al inicio de tu archivo. Los Server Components no pueden usar hooks.
El build falla tras el despliegue
Solución: Ejecuta npm run build localmente primero para comprobar errores antes de hacer push.