Así que en lugar de pre-renderizar el HTML en el servidor, solo enviará el JavaScript al cliente. Esto puede causar algunos problemas con el cambio de diseño y cosas por el estilo. Pero también puede ser muy útil si no quieres renderizar ninguno de esos componentes en la página. Y puedes crear tus propias directivas. Un gran ejemplo fue rainy in New York, donde tu componente cliente solo se cargaría si estaba lloviendo en Nueva York. Pero puedes definir un pequeño componente, que te permitirá definir el comportamiento que desees. Eso podría ser si estás esperando que se presione un botón o si estás llamando a alguna API para averiguar si algún evento está ocurriendo.
Entonces, ¿cuáles son los beneficios de las islas? Bueno, páginas más pequeñas. No necesitas enviar el JavaScript donde no lo necesitas, y no necesitas enviar tanto de él. Y con eso, obtienes un LCP más rápido. No estás esperando que todo tu componente, toda tu página cargue JavaScript y ejecute ese JavaScript para toda la página. JavaScript es la forma más pesada de contenido que puedes enviar a una página. Así que cuanto menos, mejor. También carga componentes en paralelo. Si tienes tres, cuatro islas diferentes en una página, estas se cargarán en paralelo. No tienes que esperar a que una termine antes de cargar la siguiente. Y finalmente te da un control detallado sobre el JavaScript que envías a tus usuarios.
Entonces, ¿cuándo deberías usar islas? Bueno, hay algunos lugares diferentes. En eCommerce, puedes usarlas para modelos de productos, tarjetas, widgets de recomendación, cualquier tipo de elemento interactivo en la página. Pero dado que la mayor parte de tu página va a ser estática, no tiene ningún tipo de API, no va a ser una buena idea usar islas. Pero dado que la mayor parte de tu página va a ser estática, no tiene ningún tipo de interactividad, te permite reducir ese nivel de JavaScript que estás enviando a la nube. Sitios de medios, puedes usarlas para cargar reproductores de video, comentarios, modales, formularios, cualquier cosa que puedas necesitar. Documentos y blogs, áreas de juego de código, gráficos interactivos, cualquier tipo de pequeños componentes que requieran algo de JavaScript pero no signifiquen que quieras renderizar toda la página en JavaScript. Incluso si lo haces, puedes usarlas en paneles para pequeñas cantidades de hidratación con gráficos y filtros, o incluso para cargar toda tu aplicación. Pero, ¿cómo compartimos un estado entre todas estas diferentes islas? Las islas, especialmente en Astro, pueden ser de diferentes frameworks y no tienen una forma incorporada de compartir estado. Una de mis formas favoritas de hacer eso es usando una biblioteca llamada Nanostores. Nanostores es un gestor de estado muy pequeño que te permite compartir estado a través de prácticamente cualquier cosa. No tiene dependencias y tiene integraciones para Preact, React, Vue, Svelte, Angular. Puedes usarlo en una etiqueta de script normal.
Comments