Renderizado del lado del cliente (CSR)
En el Renderizado del Lado del Cliente (CSR por sus siglas en inglés) con React, el navegador descarga una página HTML mínima y el JavaScript necesario para la página. Luego, el JavaScript se utiliza para actualizar el DOM y renderizar la página. Cuando la aplicación se carga por primera vez, el usuario puede notar un ligero retraso antes de ver la página completa, esto se debe a que la página no se renderiza completamente hasta que todo el JavaScript se descarga, analiza y ejecuta.
Después de que la página se ha cargado por primera vez, navegar a otras páginas del mismo sitio web suele ser más rápido, ya que solo es necesario obtener los datos necesarios y JavaScript puede volver a renderizar partes de la página sin necesidad de una recarga completa.
En Next.js, hay dos formas de implementar el renderizado del lado del cliente:
- Usando el hook
useEffect()
de React dentro de tus páginas en lugar de los métodos de renderizado del lado del servidor (getStaticProps
ygetServerSideProps
). - Usando una biblioteca de obtención de datos como SWR o TanStack Query para obtener datos en el cliente (recomendado).
Aquí hay un ejemplo del uso de useEffect()
dentro de una página de Next.js:
En el ejemplo anterior, el componente comienza renderizando Cargando...
. Luego, una vez que se obtienen los datos, se vuelve a renderizar y muestra los datos.
Aunque la obtención de datos en un useEffect
es un patrón que puede verse en aplicaciones antiguas de React, recomendamos usar una biblioteca de obtención de datos para un mejor rendimiento, caché, actualizaciones optimistas y más. Aquí hay un ejemplo mínimo usando SWR para obtener datos en el cliente:
Nota importante:
Tenga en cuenta que CSR puede afectar el SEO. Algunos rastreadores de motores de búsqueda podrían no ejecutar JavaScript y, por lo tanto, solo ver el estado inicial vacío o de carga de su aplicación. También puede provocar problemas de rendimiento para usuarios con conexiones a Internet lentas o dispositivos menos potentes, ya que necesitan esperar a que todo el JavaScript se cargue y ejecute antes de poder ver la página completa. Next.js promueve un enfoque híbrido que le permite usar una combinación de renderizado del lado del servidor, generación de sitios estáticos y renderizado del lado del cliente, según las necesidades de cada página en su aplicación. En el App Router, también puede usar Loading UI con Suspense para mostrar un indicador de carga mientras se renderiza la página.
Renderizado del lado del servidor (SSR)
Generación de Sitios Estáticos (SSG)
ISR
Optimización Estática Automática
Next.js optimiza automáticamente tu aplicación para generar HTML estático cuando es posible. Aprende cómo funciona aquí.
Obtención de Datos
Next.js permite obtener datos de múltiples formas, con prerenderizado, renderizado del lado del servidor (SSR) o generación de sitios estáticos, y regeneración estática incremental. Aprende a gestionar los datos de tu aplicación en Next.js.