Entornos de ejecución Edge y Node.js
En el contexto de Next.js, el entorno de ejecución (runtime) se refiere al conjunto de bibliotecas, APIs y funcionalidad general disponible para tu código durante la ejecución.
En el servidor, hay dos entornos de ejecución donde partes del código de tu aplicación pueden renderizarse:
- El Entorno Node.js (predeterminado) tiene acceso a todas las APIs de Node.js y paquetes compatibles del ecosistema.
- El Entorno Edge está basado en APIs Web.
Diferencias entre entornos de ejecución
Hay muchas consideraciones al elegir un entorno de ejecución. Esta tabla muestra las principales diferencias de un vistazo. Para un análisis más detallado, consulta las secciones siguientes.
Node.js | Serverless | Edge | |
---|---|---|---|
Arranque en frío | / | ~250ms | Instantáneo |
Streaming HTTP | Sí | Sí | Sí |
E/S | Todas | Todas | fetch |
Escalabilidad | / | Alta | Máxima |
Seguridad | Normal | Alta | Alta |
Latencia | Normal | Baja | Mínima |
Paquetes npm | Todos | Todos | Subconjunto menor |
Renderizado estático | Sí | Sí | No |
Renderizado dinámico | Sí | Sí | Sí |
Revalidación de datos con fetch | Sí | Sí | Sí |
Entorno Edge
En Next.js, el entorno ligero Edge es un subconjunto de las APIs disponibles de Node.js.
El entorno Edge es ideal si necesitas entregar contenido dinámico y personalizado con baja latencia usando funciones pequeñas y simples. La velocidad del entorno Edge proviene de su uso mínimo de recursos, pero esto puede ser limitante en muchos escenarios.
Por ejemplo, el código ejecutado en el entorno Edge en Vercel no puede exceder entre 1 MB y 4 MB, este límite incluye paquetes importados, fuentes y archivos, y variará según tu infraestructura de despliegue.
Entorno Node.js
Usar el entorno Node.js te da acceso a todas las APIs de Node.js y a todos los paquetes npm que dependen de ellas. Sin embargo, no arranca tan rápido como las rutas que usan el entorno Edge.
Desplegar tu aplicación Next.js en un servidor Node.js requerirá gestionar, escalar y configurar tu infraestructura. Alternativamente, puedes considerar desplegar tu aplicación Next.js en una plataforma serverless como Vercel, que manejará esto por ti.
Node.js Serverless
Serverless es ideal si necesitas una solución escalable que pueda manejar cargas computacionales más complejas que el entorno Edge. Con Funciones Serverless en Vercel, por ejemplo, el tamaño total de tu código es 50MB incluyendo paquetes importados, fuentes y archivos.
La desventaja comparado con rutas que usan Edge es que las Funciones Serverless pueden tardar cientos de milisegundos en arrancar antes de procesar solicitudes. Dependiendo del tráfico de tu sitio, esto podría ocurrir frecuentemente ya que las funciones no siempre están "calientes".
Consulta la documentación de Node.js y la documentación de Edge para la lista completa de APIs disponibles. Ambos entornos también pueden soportar streaming dependiendo de tu infraestructura de despliegue.
Renderizado del lado del cliente (CSR)
Aprende a implementar el renderizado del lado del cliente en el enrutador Pages.
Obtención de datos
Next.js permite obtener datos de múltiples formas, con prerrenderizado, renderizado del lado del servidor (SSR) o generación de sitios estáticos (SSG), y regeneración estática incremental (ISR). Aprende a gestionar los datos de tu aplicación en Next.js.