En el mundo del desarrollo web, es esencial entender las diferencias entre un framework y un CLI. Un CLI como Create React App te facilita el trabajo inicial configurando las bibliotecas necesarias, pero un framework como Next.js va un paso más allá al integrar herramientas internas completas para optimizar aún más el proceso de desarrollo.
¿Por qué es Next.js un framework completo?
Next.js no es solo una herramienta de línea de comandos; es un framework que utiliza la potencia de React para las vistas y añade múltiples herramientas ya configuradas para mejorar la experiencia de desarrollo. A diferencia de Create React App, que configura proyectos iniciales, Next.js integra funcionalidades avanzadas como el enrutamiento y el renderizado en el servidor, lo que facilita el desarrollo de aplicaciones completas sin necesidad de importar múltiples librerías externas.
¿Cómo estructuro una aplicación con Next.js?
Next.js estructura de manera única tus aplicaciones a través de la carpeta pages. Aquí, cada archivo se convierte automáticamente en una ruta para tu aplicación. Por ejemplo:
Un archivo index.js en pages representará la ruta /.
Un archivo about.js en pages representará la ruta /about.
Además, puedes crear subcarpetas para organizarlas mejor y generar rutas anidadas.
importLinkfrom'next/link';constHomePage=()=>(<div><p>Este es un sitio para comprar boletos de tus películas favoritas.</p><Link href="/movies"><a>Ir a comprar pelis</a></Link></div>);exportdefaultHomePage;
¿Cómo funciona el client-side routing en Next.js?
En Next.js, el componente Link se encarga del enrutamiento sin recargar la página, mejorando la velocidad y eficiencia de las aplicaciones. Cuando la página se carga por primera vez, se utiliza el renderizado en el servidor, pero una vez cargada, se transforma en un enrutamiento de cliente, agilizando así la experiencia del usuario:
Para demostrar el poder de Next.js, vamos a añadir nuevas rutas a nuestra aplicación, como una para mostrar facturas de los boletos comprados:
Elimina o renombra archivos existentes según sea necesario.
Crea nuevos archivos para cada nueva página deseada.
// movies.jsimportReactfrom'react';constMoviesPage=()=>{const movies =['Avengers','Terminator'];return(<div><h2>Películas</h2>{/* Renderizar cada película */}{movies.map((movie, index)=>(<div key={index}><p>{movie}</p></div>))}</div>);};exportdefaultMoviesPage;
¿Cómo utilizar información dinámica en Next.js?
Para mostrar información dinámica según la cantidad y tipo de boletos, Next.js utiliza useRouter para acceder a las query de las URLs, permitiendo personalizar la visualización de contenido según los datos proporcionados.
import{ useRouter }from'next/router';constPaymentPage=()=>{const router =useRouter();const{ query }= router;return(<div><p>Compraste{query.quantity} boletos de la película {query.name}.</p><Link href="/movies"><a>Devolvernos</a></Link></div>);};exportdefaultPaymentPage;
Este enfoque permite a los desarrolladores crear experiencias más personalizadas y dinámicas, adaptándose a las acciones del usuario a lo largo de la aplicación.
Estos son los fundamentos clave para trabajar con Next.js, desde la estructura básica hasta la implementación de rutas dinámicas. Está diseñado para hacer que el desarrollo de aplicaciones React sea más rápido y eficiente, y te anima a explorar también su contraparte en el ecosistema de Vue, Nuxt.js.
Desarrollo de Aplicaciones con Next.js: Rutas y Renderizado Dinámico
Desarrollo de Aplicaciones con Next.js: Rutas y Renderizado Dinámico
Recursos
Resumen
¿Qué diferencia hay entre un framework y un CLI?
En el mundo del desarrollo web, es esencial entender las diferencias entre un framework y un CLI. Un CLI como Create React App te facilita el trabajo inicial configurando las bibliotecas necesarias, pero un framework como Next.js va un paso más allá al integrar herramientas internas completas para optimizar aún más el proceso de desarrollo.
¿Por qué es Next.js un framework completo?
Next.js no es solo una herramienta de línea de comandos; es un framework que utiliza la potencia de React para las vistas y añade múltiples herramientas ya configuradas para mejorar la experiencia de desarrollo. A diferencia de Create React App, que configura proyectos iniciales, Next.js integra funcionalidades avanzadas como el enrutamiento y el renderizado en el servidor, lo que facilita el desarrollo de aplicaciones completas sin necesidad de importar múltiples librerías externas.
¿Cómo estructuro una aplicación con Next.js?
Next.js estructura de manera única tus aplicaciones a través de la carpeta pages. Aquí, cada archivo se convierte automáticamente en una ruta para tu aplicación. Por ejemplo:
Un archivo index.js en pages representará la ruta /.
Un archivo about.js en pages representará la ruta /about.
Además, puedes crear subcarpetas para organizarlas mejor y generar rutas anidadas.
import Link from 'next/link';
const HomePage = () => (
<div>
<p>Este es un sitio para comprar boletos de tus películas favoritas.</p>
<Link href="/movies">
<a>Ir a comprar pelis</a>
</Link>
</div>
);
export default HomePage;
¿Cómo funciona el client-side routing en Next.js?
En Next.js, el componente Link se encarga del enrutamiento sin recargar la página, mejorando la velocidad y eficiencia de las aplicaciones. Cuando la página se carga por primera vez, se utiliza el renderizado en el servidor, pero una vez cargada, se transforma en un enrutamiento de cliente, agilizando así la experiencia del usuario:
Para mostrar información dinámica según la cantidad y tipo de boletos, Next.js utiliza useRouter para acceder a las query de las URLs, permitiendo personalizar la visualización de contenido según los datos proporcionados.
Este enfoque permite a los desarrolladores crear experiencias más personalizadas y dinámicas, adaptándose a las acciones del usuario a lo largo de la aplicación.
Estos son los fundamentos clave para trabajar con Next.js, desde la estructura básica hasta la implementación de rutas dinámicas. Está diseñado para hacer que el desarrollo de aplicaciones React sea más rápido y eficiente, y te anima a explorar también su contraparte en el ecosistema de Vue, Nuxt.js.
De Nuxt solo hay 3 clases en un curso de Vue algo viejo, Platzi se ha enfocado mucho en React y ahora están sacando contenido para Angular pero casi nada para Vue 😫😪
En esta clase se trabajo con el framework llamado Next.js tambien conocido como el framework completo que utiliza react para la capa de vistas.
En code sanbox se creo un nuevo template con next.js
Esperar a que se cree el template ya que ahora tambien viene un servidor ya no solo archivos estaticos.
Se borro la carpeta day, se creo el archivo pay.js y se renombro el archivo about.js por movies.js
En index.js se creo una etiqueta <p> para indicar que es un sitio para comprar boletos de peliculas.
En index.js se agrego el componente <link> para redireccionar a la página de movies.js
import Link from "next/link";
export default function IndexPage() {
return (
<div>
<p>Este es un sitio para comprar boletos de tus películas favoritas</p>
<Link href="movies">
<a>Ir a comprar pelis</a>
</Link>
</div>
);
}
En movies.js se copio el código de clases anteriores de películas.
Se creo la carpeta components y el archivo Form.js
Se copio el código del componente Form de clases anteriores al archivo Form.js
En movies.js se importo el componente Form
import Link from "next/link";
import { useRouter } from "next/router";
export default function PayPage() {
const { query } = useRouter();
return (
<div>
<p>
Compraste {query.quantity} boletos de la película {query.name}
</p>
<Link href="movies">
<a>Devolernos</a>
</Link>
</div>
);
}
En pay.js se importo el componente Link
En Form.js se importo el componente Link
En movies.js importar el componente Link y crear el siguiente link
<Link href="/">
<a>Atrás</a>
</Link>
En Form.js se módifica la ruta para pasar información dinámica a la página de pay.js
El componente Link ya genera una etiqueta <a>, así que no es necesario poner una etiqueta <a> como hijo del componente Link.
Acá hay un ejemplo: Ejemplo