CodeForge

Maquetación Web Dinámica / Puentes a los frameworks

Puente a Next.js: tu landing como app con rutas

Teoría20 min20 XP

React te da componentes; Next.js los convierte en SITIOS completos: con rutas, con páginas que se renderizan en el servidor (rápidas y buenas para SEO), y con interactividad solo donde hace falta. Tomamos la landing del módulo 16 y la vemos como una app de Next. Dato curioso: esta misma plataforma que estás usando está hecha con Next.js.

El vecindario con sistema de direcciones

Ruteo por archivos: la carpeta es la URL

estructura.txt
app/
page.tsx              →  /                (la landing del módulo 16)
precios/page.tsx      →  /precios
blog/[slug]/page.tsx  →  /blog/mi-articulo   (ruta dinámica)
layout.tsx            →  envoltorio compartido (nav + footer en todas)

No hay router que configurar: la ESTRUCTURA de carpetas ES el mapa del sitio. Tu landing del módulo 16 se vuelve app/page.tsx; agregar una página de precios es crear app/precios/page.tsx. El layout.tsx es el header/ footer que ya repetías en cada página, ahora declarado UNA vez y aplicado a todas.

Servidor por defecto, cliente cuando hace falta

Este es el superpoder de Next: la mayoría de tu página se arma en el SERVIDOR (rápida, sin enviar JavaScript), y solo las piezas interactivas corren en el cliente.

app/page.tsx
// COMPONENTE DE SERVIDOR (por defecto): corre en el servidor, no envía JS
export default async function Home() {
const noticias = await getNoticias();   // puedes hacer fetch/DB aquí mismo
return (
  <main>
    {noticias.map((n) => <Tarjeta key={n.id} titulo={n.titulo} />)}
  </main>
);
}
components/Menu.tsx
"use client";   // ← solo esta pieza es interactiva y envía JS al navegador
import { useState } from "react";

export function Menu() {
const [abierto, setAbierto] = useState(false);   // el menú del módulo 14, ahora componente
return <button onClick={() => setAbierto(!abierto)}>Menú</button>;
}

El cambio mental: tu index.html único se vuelve un ÁRBOL de rutas donde casi todo se renderiza en el servidor (el header, el hero, las tarjetas —llegan listos, con buen SEO y sin JS), y solo las "islas" interactivas (el menú, un modal) llevan el "use client" y envían JavaScript. Es la mejora progresiva del módulo 8, ahora como arquitectura del framework.

En Next.js, ¿qué significa que un componente sea de SERVIDOR por defecto para el usuario final?

Mini-reto

Dibuja en papel el árbol de rutas de tu landing del módulo 16 convertida en app de Next: ¿qué sería app/page.tsx? ¿qué páginas nuevas agregarías (/precios, /contacto) y qué carpetas necesitan? ¿qué partes son de servidor (el hero, las secciones) y cuáles llevarían "use client" (el menú, un formulario)? Ese mapa mental es justo con el que arrancarás su curso.

Qué sigue

Next lleva React a sitios completos con JavaScript optimizado. El siguiente puente va al extremo opuesto de la balanza: Astro, que construye la MISMA landing enviando CERO JavaScript por defecto — y solo "hidrata" las islas que de verdad lo necesitan. Máxima velocidad para sitios de contenido.

Puente a Next.jsNext.js de Cero a ExpertoContinúa este mismo componente en el siguiente supercurso.