Conceptos básicos de Next.js 14

1

Optimización de Carga Web con Next.js

2

Creación de un Proyecto Next.js con TypeScript: Paso a Paso

3

Tienda Online con Shopify y Next.js: Implementación Práctica

4

Rutas Estáticas y Dinámicas en Next.js: Cómo Implementarlas

5

Layouts y Navegación en Next.js: Implementación Práctica

6

Navegación Eficiente con el Componente Link en Next.js

7

Rutas Dinámicas y Opcionales en Next.js

8

Componentes Cliente y Servidor en Next.js: Cuándo Usar Cada Uno

9

Componentes Reutilizables en Next.js para Mejorar la Arquitectura Web

Quiz: Conceptos básicos de Next.js 14

Manejo de estilos y estáticos en Next.js 14

10

CSS Modules en Next.js: Estiliza Componentes sin Colisiones

11

Configurar Sass en Next.js para Estilos Modulares Avanzados

12

Estilos Globales con SASS: Estrategias y Buenas Prácticas

13

Agregar Archivos Estáticos en Next.js

14

Optimización de imágenes en Next.js con Next.image

15

Optimización de Imágenes con NextImage: Técnicas y Buenas Prácticas

16

Optimización de Fuentes de Google en Aplicaciones Web

17

Estilos Dinámicos en React con Classnames: Uso Práctico y Eficiente

Quiz: Manejo de estilos y estáticos en Next.js 14

Data Fetching en Next.js

18

Creación de Tienda en Shopify usando Next.js

19

Variables de Entorno en Next.js: Configuración y Uso Avanzado

20

Consumo de APIs con JavaScript: guía práctica paso a paso

21

Loading de Productos con Next.js y React Server Components

22

Implementación de Root Grouping en Next.js: Tips y Mejores Prácticas

23

Manejo de errores con React y Next.js: Implementación práctica

Quiz: Data Fetching en Next.js

Next.js Avanzado

24

Gestión Global de Errores en Next.js

25

Renderizado con React Server Components en Next.js 14

26

Diferencias entre Template y Layout en Next.js

27

Arquitectura Escalable en Aplicaciones de Software

28

Creación de APIs con Road Handlers en Next.js

29

Configuración de Colecciones en Shopify para Tiendas Virtuales

30

Patrones de Data Fetching en Next.js: Secuencial y Paralelo

31

Filtrado de productos en Shopify usando JavaScript APIs

32

Rutas Dinámicas y Búsquedas en React con Hooks

33

Implementación de Componentes Presentacionales en React

34

Optimización de Caché en Next.js: Tipos y Estrategias

35

Revalidación de Caché en Next.js: Uso de Tags y Paths

36

Redirecciones en Next.js: Uso en Server y Client Components

37

Sanitización de HTML en React para prevenir vulnerabilidades XSS

38

SEO en páginas estáticas y dinámicas con Next.js

Quiz: Next.js Avanzado

Autenticación y autorización

39

API Storefront y Gestión de Tokens en Shopify

40

Uso de Server Actions en Next.js para Formularios

41

Implementación de Mutaciones GraphQL en Shopify

42

Creación de Cookies Seguras en Next.js para Autenticación

43

Implementación Completa de Flujo de Login en Node.js

44

Validación de Tokens de Acceso en Next.js con GraphQL

45

Carrito de Compras: Implementación con React y Estilos Sass

46

Estado global en Next.js 13 con Sustant

47

Carrito de Compras con React: Implementación y Estilos

48

Errores de hidratación en React y solución con Next.js Dynamic

49

Implementación de Middlewares en Next.js: Protege Rutas de Acceso

Inteligencia Artificial

50

Implementación de Chatbots con Next.js y Vercel AI SDK

51

Personalización de Chatbots con OpenAI para E-commerce

Performance

52

Rutas Paralelas en Next.js: Mejora el Rendimiento de Tus Apps

53

Análisis de bundles con Webpack Bundle Analyzer

Quiz: Performance

Frontend Ops

54

Optimización de Next.js con Edge Runtime

55

Despliegue de Aplicaciones NxJS en Vercel: Guía Práctica

56

Arquitectura de Proyectos Empresariales con Next.js

Quiz: Frontend Ops

Next.js es parte de tu nuevo stack

57

Creación de Apps con Next.js y React: Frontend y Backend

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Next.js 14

Curso de Next.js 14

Enrique Devars

Enrique Devars

Navegación Eficiente con el Componente Link en Next.js

6/57
Recursos

¿Cómo se manejan las navegaciones en Next.js?

Navegar por una aplicación web puede marcar la diferencia en la experiencia del usuario. Next.js ofrece una forma eficiente y optimizada de manejar la navegación usando el componente Link en lugar del tradicional elemento anchor de HTML. Esto aporta varias ventajas que explora la comunidad de desarrolladores modernos al elegir herramientas para sus proyectos.

¿Por qué usar el componente Link de Next.js?

El componente Link de Next.js proporciona una navegación fluida y optimizada entre páginas internas de la aplicación. A diferencia del tradicional ancla HTML, Link optimiza el rendimiento gracias a ciertas características claves.

Ventajas del componente Link

  • Performance Optimizado: El componente Link evita las recargas innecesarias de la página al almacenar en caché los archivos que ya han sido solicitados. Esto no solo mejora la velocidad de navegación, sino que también economiza el ancho de banda.

  • Reducción de Peticiones: Con Next.js, al ejecutar las aplicaciones del lado del servidor, el componente Link disminuye drásticamente el número de peticiones al servidor, reduciendo así los costos asociados a estas operaciones.

  • Experiencia de Usuario Mejorada: La navegación fluida y rápida que ofrece Link asegura que los usuarios disfruten de una transición sin interrupciones entre diferentes secciones de la aplicación.

¿Cómo implementar el componente Link en Next.js?

La implementación del componente Link en Next.js es bastante directa. Para comenzar, es necesario importar Link desde next/link dentro del archivo de layout o el componente donde se desee utilizar. A continuación, veamos un ejemplo básico:

import Link from 'next/link';

function Navigation() {
  return (
    <nav>
      <Link href="/">Home</Link>
      <Link href="/store">Store</Link>
    </nav>
  );
}

Al usar Link, la aplicación cargará solo los nuevos recursos necesarios, lo que reduce el lag y mejora el rendimiento.

¿Cuándo usar Link y cuándo Anchor?

Elegir entre Link y Anchor dependerá del tipo de navegación que se desea realizar:

  • Link: Se recomienda usar siempre que la URL sea interna a la aplicación, definida en el router de Next.js.

  • Anchor: Ideal para enlaces externos que no pertenecen a la aplicación, como redireccionamientos a otros sitios web. En estos casos, anchor asegura el comportamiento deseado sin cargar la aplicación con funcionalidades adicionales no necesarias.

La implementación correcta de estos elementos maximiza las capacidades de Next.js al desarrollar aplicaciones potentes y eficientes. ¡Seguimos aprendiendo y mejorando nuestra destreza en el uso de tecnologías avanzadas!

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Les recomiendo muchísimo esta extensión de vs code que nos ofrece una forma visual de ver la navegación en Next.Js, espero les sirva de ayuda!! Se llama next.nav, al principio les muestra un “dummy” pero si van al primer botón pequeño de arriba a la derecha, colocan la ruta de su app y les mostrará cómo se ven las rutas de su app

Entonces importando Link salvamos a Zelda? Jeje chiste gamer.

Excelente explicación. Resumen final: Utilizar el componente **Link** de Next para routear paginas internas de la app ya que nos ahorra peticiones extras y nos cachea la información que ya visualizamos. Sin embargo si queremos enviar al usuario a una web externa es conveniente usar la etiqueta **\**

CLASE6 01/03/2024 LINKING AND NAVIGATING

Como el routing y la navegación trabaja?

Existen cuatro formas de navegar entre rutas:

    - <Link> Component
    - <useRouter> hook (client components)
    - <redirect> function (server components)
    - Usando "History API"

LINK COMPONENT

Componente incorporado en Next, similar a <a>, es la opcion recomendada a usar, se puede usar atributos como className.

import Link from 'next/link'

export default function Page() {
  return <Link href="/dashboard">Dashboard</Link>
}

Este componente tiene la siguientes props

Prop	    Example	            Type	            Required
href	    href="/dashboard"   String or Object    Yes
replace	    replace={false}     Boolean	            -
scroll	    scroll={false}      Boolean	            -
prefetch    prefetch={false}    Boolean or null     -

Para saber si un link esta activo se puede usar el hook usePathnamme().
Si desea desplazarse a un id específico en la navegación, puede anexar su URL con un enlace hash # o simplemente pasar un enlace hash a la prop href. Esto es posible ya que <Link> se convierte en un elemento <a>.

    <Link href="/dashboard#settings">Settings</Link>

    // Output
    <a href="/dashboard#settings">Settings</a>

UseRouter

Permite el cambio de rutas mediante codigo desde el lado ‘use Client’.

Redirect

Usado en server components, mediante codigo y condicionales programamos que se rediriga a ciertas rutas.

  • Redirect devuelve por defecto un código de estado 307 (Redirección temporal). Cuando se usa en una server action, devuelve un 303, que se usa comúnmente para redirigir a una página de éxito como resultado de una petición POST.
  • Redirect genera internamente un error, por lo que debe ejecutarse fuera de los bloques try/catch.
  • Redirect puede ser llamado en los Componentes Cliente durante el proceso de renderizado pero no en los manejadores de eventos. Puede utilizar el hook useRouter en su lugar.
  • Redirect también acepta URLs absolutas y puede utilizarse para redirigir a enlaces externos.
  • Si desea redirigir antes del proceso de renderizado, utilice next.config.js o Middleware.

History API

Existe history.pushState y history.replaceState que son metodos para actualizar la pila del historial del navegador sin recargar la pagina.

el useRouter también nos permite cambiar la ruta, ¿cual seria el caso ideal para su uso?
\*\* NAVEGACIÓN \*\* Elemento Link para una NAVEGACIÓN + fluida, para evitar recargar la página, ahorrando ancho de banda y mejorando performance bajando en número de peticiones **Anchor vs Link:** Anchor para urls externas Link para urls dentro de la aplicación
Aquí dejo información complementaria que puede aportar mayor profundidad y contexto a las notas que ya tienes: ### 1. Integración con React Server Components En Next.js 13, los componentes dentro del directorio **app** son *Server Components* por defecto. Esto significa que, salvo que los marques explícitamente como componentes del cliente (usando `"use client";`), se renderizarán en el servidor. Esta característica permite optimizar la carga inicial y reducir la cantidad de JavaScript enviado al cliente, lo que mejora el rendimiento y la seguridad de la aplicación. citeturn0search7 ### 2. Persistencia de estado vs. reinicio de componentes Una de las grandes ventajas de usar **layouts** (en contraste con los **templates**) es que el layout persiste entre las transiciones de página. * **Layout**: Mantiene el estado y evita la re-montaje completa del componente compartido. Esto es especialmente útil para elementos como barras de navegación o contadores que deben conservarse al navegar por diferentes páginas. * **Template**: Se reinicia en cada navegación, lo que es útil cuando se requiere limpiar el estado o forzar la re-ejecución de efectos secundarios (como animaciones o lógica de formularios). Esta diferencia te permite elegir la estrategia adecuada según las necesidades de la interfaz. citeturn0search2 ### 3. Enrutamiento anidado y grupos de rutas Next.js 13 ha mejorado notablemente la manera de organizar la estructura de rutas: * **Layouts anidados**: Permiten definir estructuras compartidas para secciones específicas (por ejemplo, una sección de tienda con su propio menú lateral) sin afectar el layout global. * **Grupos de rutas**: Mediante el uso de nombres entre paréntesis en el sistema de archivos (por ejemplo, `(custom)`), puedes aislar ciertas rutas y sus layouts. Esto es muy útil cuando deseas aplicar un diseño completamente distinto (como para páginas de administración o páginas de contenido especial) sin interferir con el diseño principal de la aplicación. citeturn0search6 ### 4. Gestión de metadatos y SEO Next.js 13 incorpora una API de **Metadata** que te permite definir elementos del `<head>` (títulos, descripciones, metaetiquetas, etc.) de manera centralizada en los layouts o páginas. Esto no solo mejora el SEO, sino que también permite definir plantillas para títulos que se combinan con títulos específicos de cada página, tal como se mostró en algunos aportes de la comunidad. Ejemplo: export const metadata = { title: { template: "%s | Mi Sitio", default: "Mi Sitio" }, description: "Descripción general de mi aplicación", }; De esta manera, cada página que defina su propio título se integrará automáticamente en la plantilla definida en el root layout. citeturn0search4 ### 5. Estados de carga y manejo de errores Next.js 13 facilita la gestión de estados de carga y errores mediante archivos especiales: * **loading.js**: Permite definir interfaces de carga personalizadas para rutas específicas o para la aplicación completa, lo que mejora la experiencia del usuario mientras se obtienen datos. * **error.js**: Permite definir interfaces de error (similares a las Error Boundaries en React) para manejar de manera elegante los errores que puedan ocurrir durante el renderizado o la obtención de datos. Esta estructura modular hace posible un manejo más fino de las diferentes situaciones en la aplicación. citeturn0search1 ### 6. Mezcla de componentes del lado del servidor y del cliente Aunque la mayoría de los componentes en el directorio **app** son *Server Components*, es muy común que ciertas partes de la UI requieran interactividad en el cliente. * Para ello, puedes convertir un componente en cliente agregando la directiva `"use client";` al inicio del archivo. * Un ejemplo típico es la creación de un componente de navegación que utilice el hook `useSelectedLayoutSegment` para resaltar la ruta activa, sin comprometer el rendimiento global de la aplicación. Esto permite optimizar el uso de recursos: el contenido estático se renderiza en el servidor y la interactividad se añade solo donde es estrictamente necesaria. citeturn0search10 ### 7. Revalidación y optimización de caché Next.js 13 introduce mejoras en la obtención y el manejo de datos: * La nueva estrategia de **caché** permite que, al navegar entre rutas que comparten el mismo layout, solo se vuelvan a renderizar las partes que realmente cambiaron. * La revalidación de datos y la deduplicación de solicitudes (cuando se solicita la misma información en diferentes rutas) ayudan a mejorar la eficiencia de la aplicación, reduciendo llamadas innecesarias al servidor. Esta optimización es fundamental en aplicaciones con gran cantidad de datos dinámicos o en aquellas que se benefician del renderizado incremental. citeturn0search5 ### Conclusión La estructura de layouts en Next.js 13 no solo mejora la organización y reutilización del código, sino que también aporta ventajas en rendimiento, SEO y experiencia de usuario. Aprovechar la persistencia de estado en layouts, la flexibilidad de los grupos de rutas, la integración de React Server Components y las nuevas APIs de metadatos y manejo de errores, te permite construir aplicaciones escalables y altamente optimizadas. Cada uno de estos aspectos es valioso para mantener una aplicación consistente y eficiente, al mismo tiempo que simplifica el proceso de desarrollo y facilita la implementación de cambios y mejoras.