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

Curso de Next.js 14

Curso de Next.js 14

Enrique Devars

Enrique Devars

Análisis de bundle para Next.js 14

53/57
Recursos

¿Qué es el análisis de bundle y por qué es importante?

El desempeño de una aplicación web no solo implica la rapidez con la que se carga una página o qué tan bien se posiciona en las Core Web Vitals. Es crucial prestar atención al bundle, que es la cantidad de código que enviamos tanto al cliente como al servidor. En el caso de aplicaciones desarrolladas con Next.js, este análisis abarca también el Edge Computing. Para medir esto, utilizamos herramientas como el Bundle Analyzer de Webpack.

El Bundle Analyzer nos permite:

  • Identificar qué dependencias afectan más el tamaño de nuestro proyecto.
  • Optimizar el peso del código entregado al cliente.
  • Mejorar el rendimiento global de la aplicación.

¿Cómo se instala y configura el Bundle Analyzer en Next.js?

Primero, es necesario instalar la dependencia del Bundle Analyzer en tu proyecto. Esto se hace desde la terminal:

npm install --save-dev @next/bundle-analyzer

Una vez instalada la dependencia, se debe configurar en el archivo next.config.js:

const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
});

module.exports = withBundleAnalyzer({});

Esta configuración envuelve la configuración de Next.js, permitiendo que el análisis se realice solamente cuando la variable de entorno ANALYZE esté activa.

¿Cómo se activa y ejecuta el análisis?

Para ejecutar el análisis de bundle, es necesario añadir un script en el package.json que active el Bundle Analyzer. Se puede hacer de la siguiente manera:

"scripts": {
  "analyze": "cross-env ANALYZE=true next build"
}

Luego, al ejecutar npm run analyze, se construirá toda la aplicación utilizando el Bundle Analyzer. Esto abrirá tres pantallas que muestran el tamaño y contenido del bundle destinado al cliente, servidor y Edge.

¿Cómo interpretar los resultados del análisis?

Al interpretar los resultados del Bundle Analyzer, podemos identificar las dependencias más pesadas y sus impactos. Por ejemplo:

  • Los chunks entregados al cliente pueden incluir librerías como React DOM o Next.js.
  • El análisis te indicará cuánto pesan estos chunks y su tamaño al ser comprimidos con técnicas como gzip.
  • Esto es útil, por ejemplo, si al introducir librerías como moment, que son reconocidas por su gran peso, pudieran incrementar significativamente el tamaño del bundle.

Para evitar el uso de bibliotecas pesadas innecesarias, podemos sacarlas de nuestro proyecto si no son esenciales. Por ejemplo, moment fue identificado como una dependencia pesada y fue posible eliminarlo y verificar su impacto con un nuevo análisis.

¿Qué es un performance budget y cómo se relaciona?

La optimización del rendimiento de una aplicación considera no solo el análisis de bundle sino también otros aspectos:

  • Monitoreo de Core Web Vitals para asegurar una carga y renderización óptima.
  • Evaluación exhaustiva y continua con herramientas como el Bundle Analyzer.
  • Implementación de un performance budget, que es estructurar límites en el uso de recursos para mantener el rendimiento deseado.

Este proceso puede automatizarse para integrar buenas prácticas de desempeño, facilitando el desarrollo continuo y garantizando una aplicación eficiente. Inspirar confianza en tu audiencia comienza con una aplicación bien diseñada, eficiente y bien optimizada. ¡Sigue adelante y potencia tus proyectos con estas prácticas!

Aportes 3

Preguntas 0

Ordenar por:

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

Si les aparece este error al correr **npm run analyze**: ![](https://static.platzi.com/media/user_upload/image-1a9c3a53-4b25-4325-b11d-33975c85c7fe.jpg) Corran el siguiente comando para instalar **cross-env** `npm install --save-dev cross-env` Después agregamos esto a la linea del script en package.json `"analyze": "cross-env ANALYZE=true next build"` y ahora si podemos ejecutar `npm run analyze`
Para quienes estan utilizando el archivo de configuracion de next como un archivo mjs: ```js import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; import withBundleAnalyzer from '@next/bundle-analyzer'; /** @type {import('next').NextConfig} */ const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const bundleAnalyzer = withBundleAnalyzer({ enabled: process.env.ANALYZE === 'true', }) const nextConfig = { sassOptions: { includePaths: [join(__dirname, 'src/sass')], prependData: `@import "main.sass"`, }, images:{ remotePatterns:[ { hostname:'cdn.shopify.com', protocol:'https' } ] } }; export default bundleAnalyzer(nextConfig); ```
npm i @next/bundle-analyzer