Next.js
Migración de Proyectos entre App Router y Page Router
En este capítulo, aprenderemos cómo realizar la migración de proyectos entre el App Router y el Page Router en Next.js 13. Tanto el App Router como el Page Router tienen diferentes características y formas de manejar rutas, por lo que es importante entender cómo migrar proyectos sin romper la funcionalidad existente.
Diferencias Clave entre el App Router y el Page Router
Antes de migrar un proyecto entre estos dos sistemas de enrutamiento, es crucial entender las diferencias clave entre el App Router y el Page Router:
-
App Router: Introducido en Next.js 13, ofrece soporte nativo para layouts, manejo avanzado de datos, y mejoras en el sistema de enrutamiento. Las rutas se gestionan en la carpeta
app/
. -
Page Router: El sistema de enrutamiento tradicional, basado en la carpeta
pages/
. Aquí, cada archivo de la carpetapages/
representa una ruta.
Consideraciones para la Migración
La migración de un proyecto entre estos dos sistemas de enrutamiento implica ciertos pasos clave, como la reestructuración de las carpetas y el ajuste de las funciones para obtener datos.
Migración del App Router al Page Router
Si estás utilizando el App Router y deseas migrar tu proyecto al Page Router, deberás hacer cambios en la estructura de archivos y en cómo manejas los layouts y el fetching de datos.
-
Mover las rutas de la carpeta
app/
apages/
: Los archivos que estaban enapp/
ahora deben trasladarse apages/
, y cada archivo dentro depages/
representará una ruta. -
Reemplazar layouts nativos con componentes reutilizables: Como el Page Router no tiene soporte nativo para layouts, deberás crear un layout personalizado utilizando componentes comunes.
-
Ajustar el Data Fetching: El App Router maneja el fetching de datos de forma diferente. En el Page Router, debes utilizar las funciones
getStaticProps
,getServerSideProps
ygetStaticPaths
para obtener datos.
Ejemplo de Migración de Layout
Supongamos que tienes un layout nativo en el App Router:
javascript
Para migrar este layout al Page Router, debes convertirlo en un componente reutilizable y aplicarlo manualmente a las páginas dentro de pages/
.
javascript
Ajuste del Data Fetching
En el App Router, los datos se pueden obtener directamente dentro de las rutas utilizando hooks como use
. En el Page Router, necesitas usar las funciones de data fetching como getStaticProps
o getServerSideProps
.
Ejemplo de Ajuste en el Fetching de Datos
En el App Router, podrías tener algo como esto:
javascript
Para migrarlo al Page Router, necesitarás utilizar getServerSideProps
para obtener los datos:
javascript
Migración del Page Router al App Router
Si deseas migrar un proyecto del Page Router al App Router, la estructura de archivos debe cambiar de pages/
a app/
. Además, deberás aprovechar las nuevas características del App Router, como layouts nativos y el manejo directo de datos.
-
Mover las rutas de
pages/
aapp/
: Elimina la carpetapages/
y crea una estructura de rutas dentro deapp/
, con archivos comopage.js
para representar cada ruta. -
Aprovechar layouts nativos: En lugar de crear layouts personalizados como en el Page Router, utiliza el sistema de layouts anidados del App Router.
Ejemplo de Migración de Data Fetching
En el Page Router, los datos se obtienen utilizando getStaticProps
o getServerSideProps
. En el App Router, puedes simplificar esto utilizando el hook use
.
Antes en el Page Router:
javascript
Después en el App Router:
javascript
Consideraciones de SEO en la Migración
Tanto el App Router como el Page Router manejan el SEO de manera efectiva, pero es importante verificar que las rutas migren correctamente para mantener el rendimiento de SEO. Asegúrate de que las redirecciones y reescrituras estén configuradas adecuadamente para evitar problemas con los motores de búsqueda.
Implementar Redirecciones
Si migras las rutas y las URLs cambian, debes configurar redirecciones para evitar que los usuarios (y motores de búsqueda) encuentren errores 404. Puedes hacer esto con el archivo next.config.js
:
javascript
Conclusión
Migrar proyectos entre el App Router y el Page Router en Next.js 13 requiere ajustar la estructura de archivos, los layouts, y la forma en que se obtienen los datos. Al seguir estos pasos, puedes realizar una migración sin problemas mientras aprovechas las fortalezas de cada sistema de enrutamiento.
- Introducción a Next.js 13 y el App Router
- Estructura de Proyecto en Next.js con App Router
- Páginas y Rutas en el App Router
- Renderizado de Páginas y SSR en el App Router
- Uso de Layouts en el App Router
- Data Fetching en Next.js 13 con App Router
- Uso de Hooks y Context API con el App Router
- Autenticación y Autorización en el App Router
- Optimización y Performance en Next.js 13 (App Router)
- Internationalization (i18n) en Next.js 13 con App Router
- Introducción al Page Router y Diferencias con el App Router
- Rutas y Navegación en el Page Router
- Data Fetching en el Page Router
- Páginas con SSR y SSG en el Page Router
- Implementación de Layouts en el Page Router
- Manejo de Archivos Estáticos y Recursos en el Page Router
- Redirecciones y Reescrituras en el Page Router
- Gestión de Errores y Estados en el Page Router
- Migración de Proyectos entre App Router y Page Router
- Despliegue y Buenas Prácticas en Next.js 13