Conceptos básicos de Next.js 14

1

¿Qué es Next.js y por qué aprenderlo si quieres ser frontend senior?

2

Arquitectura de un proyecto de Next.js

3

Herramientas y stack utilizado en el curso

4

Cómo crear rutas en Next.js

5

Cómo crear Layout en Next.js

6

Cómo funciona la navegación en Next.js

7

Manejo de parámetros en rutas en Next.js

8

React Server Components en Next.js: notación "use Client"

9

Creación de arquitectura de landing page en Next.js

Quiz: Conceptos básicos de Next.js 14

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

10

CSS Modules en Next.js 13

11

Uso de Sass en Next.js

12

Cómo utilizar estilos globales en Next.js

13

Cómo agregar archivos estáticos en Next.js

14

Manejo y optimización de imágenes con Next Image

15

Optimización del componente image en Next.js

16

Optimización de fuentes con Next.js

17

Creando estilos dinámicos aplicando condicionales en Next.js

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

Data Fetching en Next.js

18

Creación de tienda de Shopify para un proyecto en Next.js

19

Manejo de variables de entorno en Next.js

20

Cómo obtener información de una API con Next.js

21

Manejo de estado de carga con el archivo loading.tsx

22

Route Grouping en Next.js

23

Manejo de errores en la UI con el archivo error.tsx

Quiz: Data Fetching en Next.js

Next.js Avanzado

24

Implementando páginas de Not Found y error global

25

Cómo impactan los React Server Components en un proyecto en Next.js

26

Cuándo utilizar layout o template en Next.js

27

Arquitectura profesional para data fetching en un proyecto en Next.js

28

Next.js para backend: manejando rutas con archivos Route Handlers

29

Proyecto: implementando la página de tienda

30

Patrones de data fetching en Next.js

31

Proyecto: filtrando categorías de productos

32

Data fetching de parámetros en el servidor y cliente

33

Proyecto: página de producto y arreglos en el sitio

34

Cómo funciona el Fetch y el Caché de Next.js

35

Revalidando cache con revalidateTag y revalidatePath en Next.js

36

Cómo hacer redirects en Next.js

37

Proyecto: HTML dinámico en la descripción del producto

38

Mejorando SEO de una página en Next.js

Quiz: Next.js Avanzado

Autenticación y autorización

39

Manejando autenticación y autorización con Storefront APÏ de Shopify

40

Server Actions en Next.js

41

Proyecto: proceso de Sign-Up con GraphQL

42

Manejo de cookies para colocar un token de acceso de un proyecto en Next.js

43

Cómo implementar un flujo de login en un proyecto en Next.js

44

Validando token de acceso de usuario en un proyecto en Next.js

45

Proyecto: implementando el carrito de compras

46

Manejo de estado global con zustand en Next.js

47

Proyecto: agregando items al carrito de compras

48

Cómo integrar el checkout de Shopify a un proyecto en Next.js

49

Implementar middleware en proyecto en Next.js para protección de rutas

Inteligencia Artificial

50

Creando componente de chatbot de ventas con la SDK IA de Vercel

51

Implementación de un bot de ventas en una app Next.js

Performance

52

Optimización de carga con parallel routing en Next.js

53

Análisis de bundle para Next.js 14

Quiz: Performance

Frontend Ops

54

Edge runtime

55

Despliegue de un proyecto Next.js en Vercel

56

Mejores prácticas en arquitecturas empresariales

Quiz: Frontend Ops

Next.js es parte de tu nuevo stack

57

¡Has creado un proyecto en Next.js!

No tienes acceso a esta clase

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

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

15 Días
2 Hrs
17 Min
8 Seg
Curso de Next.js 14

Curso de Next.js 14

Enrique Devars

Enrique Devars

React Server Components en Next.js: notación "use Client"

8/57
Recursos

Aportes 11

Preguntas 3

Ordenar por:

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

Muy buena explicación en general, pero el primer ejemplo de renderizar un server component dentro de un client component si funcionó, esto es porque el componente **página** (server) es pasado como children al **layout** (client) y next permite hacer esto. Lo que no permite es **importar** directamente un server component dentro de un client component. En conclusión, se puede renderizar un server component dentro de un client component siempre que sea pasado como prop al client component. Fuente: <https://nextjs.org/docs/app/building-your-application/rendering/composition-patterns#unsupported-pattern-importing-server-components-into-client-components>
Me estaba dando un error al ubicar el Header fuera del body en el RootLayout, al colocarlo por debajo de body se soluciono, por si les pasa.

CLASE8 02/03/2024 RENDERING - SERVER Y CLIENT COMPONENTS

Para entender plenamente este tema debemos estar familiarizados con estos tres conceptos:

Enviroments

El codigo puede ser ejecutado tanto en el lado del server y cliente.

Por cliente se refiere: lo que el navegador solicita a traves del dispositivo del usuario y el server responde con una interface de usuario.
Por server: a la PC que almacena nuestro codigo de la aplicacion, la pc recibe una solicitud desde el cliente y este envía una respuesta.

Request-Response Lifecycle

Inicia cuando un usuario visita o interactua con la aplicación.
En resumen el usuario interactura con la app, el cliente envía solicitudes http, llegan al server, este las procesa y reponde con recursos de HTML, CSS, JS, etc, esto se renderiza al cliente.

Network Boundary

separa el codigo de server y del cliente.
Con las convenciones “use client” y “use server” podemos definir nuestras fronteras.
Si necesitas acceder al servidor desde el cliente, envías una nueva petición al servidor en lugar de reutilizar la misma petición. Esto facilita la comprensión de dónde renderizar sus componentes y dónde colocar el Límite de Red.

SERVER COMPONENTS

Por defecto Next usa Server Components.
los react server components permiten escribir UI que puede ser renderizado y cacheado en el servidor.
Existen 3 estrategias de server rendering:

Los beneficios pueden ser:
- Data Fetching:al tener tu codigo viviendo dentro del server y a lado de un posible data store, esto hace que se reduzcan los tiempos del fetch para realizar el renderizado.
- Seguridad: Mantiene los datos y la logica del server seguros, evitando exponerlos al cliente.
- Cacheo: luego del renderizado, esta informacion se puede guardar y ser utilizada posteriormente.
- Bundles Sizes: podemos tener dependencias “precargadas” lista, evitando que el cliente use mas data de los necesario.
- Carga de la pagina inicial: El server genera html que permite al usuario visualizar la pagina inmediatamente.
- SEO y SNS: ayuda a los bots generar visualizaciones de la pagina.
- Streaming: facilita la visualizacion de pequeños bloques de la pagina, hasta que se carge toda.

<h5>Static Rendering</h5>
- Las rutas son renderizadas en build time, los resultados pueden ser cacheados y empujados a un CDN.
- Es util cuando una ruta tiene data que no es personalizada para el usuario, como un blog o pagina de producto.
<h5>Dynamic Rendering</h5>
- Las rutas son renderizadas por cada usuario en cada request.
- Es util cuando una ruta tiene data que si es personalizada hacia el usuario, como cookies o searchParams.
- El uso de las funciones de cookies(), headers() y searchParams hacen que sea automaticamente un render dinámico en toda la ruta.
<h5>Streaming</h5>
- Habilita que progresivamente veamos UI desde el servidor, diviendolo en pequeños trozos y enviandolo por diferentes canales o "stream/buffers"
- El streaming está integrado por defecto en Next.js App Router. Esto ayuda a mejorar tanto el rendimiento inicial de carga de la página, así como la interfaz de usuario que depende de la obtención de datos más lentos que bloquearían la representación de toda la ruta. Por ejemplo, las reseñas en una página de producto.
- Para empezar a usar streaming route segments se puede utilizar Loading.tsx

CLIENT COMPONENTS

Permite escribir UI interactivos que pueden ser renderizados en el lado del cliente al momento de la solicitud.
¿Cuando usarlos?
- Cuando se usen hooks com useState, effects y event listeners.
- Cuando se requiera usar Browser API.
Se puede usarlo colocando la directiva de “use client” en el archivo deseado, lo que convertida a todos los archivos que se deriven en el como client components.

COMPOSICION DE PATRONES

Al 2/04/2024 el \<Header /> lo tuve que poner dentro del body sobre {children} para que no me de errores.
Yo tengo el siguiente principio para escoger entre server y client components Todos los componentes son del lado del servidor excepto los que requieran interacción, consumir una API del navegador, animaciones o ese tipo de cosas
![](https://static.platzi.com/media/user_upload/image-89819133-1240-45d3-b6e2-d5c13e5c5d6c.jpg)
Algo que he aprendido al optimizar apps con caché en servidor (backend), es que cuando un componente usa datos directos del usuario, es mejor dejarlo como 'client component'. Esos requests siempre tardan más (van hasta el origin y no pueden cacheados en masa). Para el resto, caché a tope. 🚀
esta es de las cosas más importantes y comunes al desarrollar con next!
Me sale este error al usar el alias Cannot find module 'app/components/Header' or its corresponding type declarations.
Creo que los archivos proxy que mencionas yo los conocía como barrel files, si bien sirven muy bien para organizar varios imports de un componente, tienen un asunto en el performance al construir el grafo de dependencias cuando se hace le build de los archivos o tests, caso contrario a lo que mencionas prefiero definir el componente en el index tsx y hacer los import explícitos que se requieran. Un poco mas detallado lo que menciono viene explicado en el siguiente enlace <https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-7/> ![](https://static.platzi.com/media/user_upload/image-bb01daca-7d15-4e41-9da7-bdd659623b81.jpg)
La desventaja que veo de la atomicidad de Nextjs es que genera una cantidad grande de componentes y por ende de archivos y en proyectos grandes se vuelve tedioso.