En el desarrollo web , la hidratación o rehidratación es una técnica en la que JavaScript del lado del cliente convierte una página web estática desde la perspectiva del navegador web , entregada ya sea mediante renderizado estático o renderizado del lado del servidor , en una página web dinámica adjuntando controladores de eventos a los elementos HTML en el DOM . [ 1 ] Debido a que el HTML se pre-renderiza en un servidor, esto permite una rápida "primera pintura con contenido" (cuando los datos útiles se muestran por primera vez al usuario), pero hay un período de tiempo posterior en el que la página parece estar completamente cargada e interactiva, pero no lo está hasta que se ejecuta el JavaScript del lado del cliente y se han adjuntado los controladores de eventos. [ 2 ]
Los frameworks que utilizan hidratación incluyen Next.js [ 3 ] y Nuxt . [ 4 ] React v16.0 introdujo una función "hydrate", que hidrata un elemento, en su API . [ 5 ] [ 6 ]
Variaciones
Renderizado en tiempo real del lado del servidor
La renderización en tiempo real del lado del servidor permite enviar HTML en fragmentos que el navegador puede renderizar progresivamente a medida que los recibe. Esto puede proporcionar una primera visualización rápida y una primera visualización con contenido, ya que el marcado HTML llega a los usuarios más rápidamente. [ 2 ]
Rehidratación progresiva
En la rehidratación progresiva , las partes individuales de una aplicación renderizada en el servidor se "arrancan" gradualmente, en lugar del enfoque común actual de inicializar toda la aplicación a la vez. Esto puede ayudar a reducir la cantidad de JavaScript necesaria para que las páginas sean interactivas, ya que la actualización del lado del cliente de las partes de baja prioridad de la página se puede posponer para evitar bloquear el hilo principal. También puede ayudar a evitar uno de los problemas más comunes de la rehidratación de renderizado del lado del servidor, donde un árbol DOM renderizado en el servidor se destruye y luego se reconstruye inmediatamente, generalmente porque el renderizado síncrono inicial del lado del cliente requería datos que no estaban del todo listos, tal vez esperando la resolución de una Promesa . [ 2 ]
Rehidratación parcial
La rehidratación parcial ha demostrado ser difícil de implementar. Este enfoque es una extensión de la idea de rehidratación progresiva, donde se analizan las piezas individuales (componentes/vistas/árboles) que se rehidratarán progresivamente y se identifican aquellas con poca interactividad o sin reactividad. Para cada una de estas partes mayormente estáticas, el código JavaScript correspondiente se transforma en referencias inertes y funcionalidad decorativa, reduciendo su huella en el lado del cliente a casi cero. El enfoque de rehidratación parcial presenta sus propios problemas y compromisos. Plantea algunos desafíos interesantes para el almacenamiento en caché , y la navegación del lado del cliente implica que no se puede asumir que el HTML renderizado por el servidor para las partes inertes de la aplicación estará disponible sin una carga completa de la página. [ 2 ]
Un marco que admite la rehidratación parcial es Elder.js, que se basa en Svelte . [ 7 ]
Representación trisomórfica
La renderización trisomórfica es una técnica que utiliza la renderización en tiempo real del lado del servidor para las navegaciones iniciales (sin JavaScript) y, posteriormente, emplea service workers para renderizar el HTML de las navegaciones una vez instalado. Esto permite mantener actualizados los componentes y plantillas en caché y habilita las navegaciones de estilo SPA para renderizar nuevas vistas en la misma sesión. Este enfoque funciona mejor cuando se puede compartir el mismo código de plantillas y enrutamiento entre el servidor, la página del cliente y el service worker. [ 2 ]
Referencias
- ↑ "Hidratación del lado del cliente | Guía de Vue SSR" . ssr.vuejs.org . Consultado el 11 de diciembre de 2020 .
- 1 2 3 4 5 Miller, Jason; Osmani, Addy (26 de noviembre de 2019). "Renderizado en la Web" . Google Developers . Recuperado el 11 de diciembre de 2020 .
- ↑ "Características básicas: Páginas | Next.js" . nextjs.org . Consultado el 4 de enero de 2021 .
- ↑ "Renderizado del lado del servidor + del lado del cliente" . NuxtJS . Consultado el 3 de diciembre de 2023 .
- ↑ "ReactDOM – React" . reactjs.org . Consultado el 4 de enero de 2021 .
- ↑ "React v16.0 – Blog de React" . reactjs.org . Consultado el 4 de enero de 2021 .
- ↑ "Elder.js: Un framework Svelte y generador de sitios estáticos" . Guía de Elder . Consultado el 4 de enero de 2021 .
Algunas partes de esta página son modificaciones basadas en el trabajo creado y compartido por Google y utilizado de acuerdo con los términos descritos en la Licencia Creative Commons 4.0 de Atribución , específicamente el artículo "Rendering on the Web" de Jason Miller y Addy Osmani .
- Desarrollo web