@astrojs/ lit
Esta integración de Astro permite renderización en el servidor e hidratación en el cliente para tus elementos personalizados de Lit.
Instalación
Sección titulada InstalaciónAstro incluye un comando astro add
para automatizar la configuración de las integraciones oficiales. Si lo prefieres, puedes instalar las integraciones manualmente en su lugar.
Para instalar @astrojs/lit
, ejecuta lo siguiente desde el directorio de tu proyecto y sigue las indicaciones:
Si tienes algún problema, no dudes en informárnoslo en GitHub y prueba los pasos de instalación manual a continuación.
Instalación manual
Sección titulada Instalación manualPrimero, instala el paquete @astrojs/lit
:
La mayoría de los gestores de paquetes también instalarán las dependencias asociadas. Sin embargo, si ves un aviso “No se puede encontrar el paquete ‘lit’” (o similar) al iniciar Astro, tendrás que instalar lit
y @webcomponents/template-shadowroot
:
Luego, aplica la integración a tu archivo astro.config.*
usando la propiedad integrations
:
Empezando
Sección titulada EmpezandoPara usar tu primer componente React en Astro, dirígete a nuestra documentación de frameworks UI. Explorarás:
- 📦 como se cargan los componentes de framework,
- 💧 opciones de hidratación del lado del cliente, y
- 🤝 oportunidades para mezclar y anidar frameworks juntos
Escribir e importar un componente de Lit en Astro se ve así:
Ahora, el componente está listo para ser importado a través del frontmatter de Astro:
Lit requiere que los globales del navegador, como HTMLElement
y customElements
, estén presentes. Por esta razón, el renderizador de Lit simula estos globales en el servidor para que Lit pueda funcionar. Es posible que te encuentres con bibliotecas que funcionen incorrectamente debido a esto.
Polyfills y Hidratación
Sección titulada Polyfills y HidrataciónEl renderizador maneja automáticamente la adición de los polifills adecuados para brindar soporte en navegadores que no tienen Declarative Shadow DOM. El polifill tiene un tamaño aproximado de 1.5kB. Si el navegador admite Declarative Shadow DOM, se cargan menos de 250 bytes (para detectar la compatibilidad con la función).
La hidratación también se maneja automáticamente. Puedes usar las mismas directivas de hidratación, como client:load
, client:idle
y client:visible
, como lo harías con otras bibliotecas compatibles con Astro.
Lo anterior solo cargará el JavaScript del elemento cuando el usuario lo haya desplazado a la vista. Dado que se renderiza en el servidor, el usuario no verá ningún parpadeo; se cargará y se hidratará de manera transparente.
Solución de problemas
Sección titulada Solución de problemasPara obtener ayuda, consulta el canal #support
en Discord. ¡Nuestros amables miembros del Equipo de Soporte están aquí para ayudar!
También puedes consultar nuestra documentación de integración de Astro para obtener más información sobre las integraciones.
A continuación se enumeran algunos problemas comunes:
Globales del navegador
Sección titulada Globales del navegadorLa renderización del lado del servidor (SSR) de la integración de Lit funciona mediante la adición de algunas propiedades globales del navegador al entorno global. Algunas de las propiedades que se agregan incluyen window
, document
y location
.
Estos globales pueden interferir con otras bibliotecas que utilizan la existencia de estas variables para detectar que se están ejecutando en el navegador, cuando en realidad se están ejecutando en el servidor. Esto puede provocar errores en estas bibliotecas.
Debido a esto, la integración de Lit puede no ser compatible con este tipo de bibliotecas. Una cosa que puede ayudar es cambiar el orden de las integraciones cuando Lit interfiere con otras integraciones:
El orden correcto puede variar según la causa subyacente del problema. Sin embargo, no se garantiza que esto solucione todos los problemas, y algunas bibliotecas no se pueden utilizar si estás utilizando la integración de Lit debido a esto.
Gestores de paquetes estrictos
Sección titulada Gestores de paquetes estrictosCuando utilizas un gestor de paquetes estricto como pnpm
, es posible que obtengas un error como ReferenceError: module is not defined
al ejecutar tu sitio. Para solucionar esto, debes elevar las dependencias de Lit con un archivo .npmrc
:
Limitaciones
Sección titulada LimitacionesLa integración de Lit está impulsada por @lit-labs/ssr
que tiene algunas limitaciones. Consulta su documentación de limitaciones para obtener más información al respecto.