¿Cómo integrar Svelte en un proyecto multiparadigma?
Integrar múltiples frameworks en un solo proyecto es un desafío emocionante, y ahora es el turno de agregar Svelte, uno de los frameworks más dinámicos y amigables. Este proceso no solo diversifica las herramientas utilizadas sino que también amplía el alcance del proyecto, integrándose con frameworks como React y Vue ya presentes. Te mostraremos cómo llevar a cabo este proceso paso a paso.
¿Cómo realizar la instalación inicial?
Primero, debemos apagar nuestro entorno de desarrollo local para comenzar con la instalación de las dependencias necesarias: Astro para Svelte y el propio framework Svelte.
Instalar dependencias de Astro y Svelte:
npminstall astro.js.svelte@2.0.1
Instalar Svelte:
npminstall svelte@3.55.1
¿Cómo configuramos Svelte dentro del proyecto?
Una vez instalados los paquetes, necesitamos ajustar las configuraciones necesarias para que todo funcione correctamente.
Configuración del archivo astro.config:
Importa Svelte dentro del archivo de configuración.
importSveltefrom'astro.svelte';
Asegúrate de integrar Svelte en el listado de frameworks soportados.
Configuración de Tailwind:
Aunque no se detalla específicamente, asegúrate de que las configuraciones de Tailwind estén correctamente definidas para que los estilos se apliquen de manera uniforme en los distintos frameworks.
¿Cómo se crea un componente en Svelte?
Con el entorno configurado, pasamos a crear nuestro primer componente en Svelte, en este caso, una sección para redes sociales.
Crear un nuevo componente:
Crea un archivo llamado Social.svelte.
Copia el contenido relevante, como listas no ordenadas de redes sociales, desde el componente Vue existente, asegurándose de cortar y pegar principalmente el contenido que desea trasladar.
Estructura básica del componente en Svelte:
Los componentes en Svelte utilizan una sintaxis similar al HTML con la capacidad de añadir lógica de JavaScript mediante <script> y estilos con <style>.
<script>// Aquí puede ir la lógica de JavaScript necesaria</script><style>/* Estilos personalizados */</style><ul><!-- Código de las redes sociales --></ul>
¿Cómo integrar y validar el componente en la aplicación?
Integrar el componente en las páginas:
Añadimos el componente Social dentro de la estructura del HTML existente.
Esto se hace integrándolo sobre el footer para que sea más visible.
Validar el entorno de desarrollo:
Inicia el entorno con el siguiente comando:
npm run dev
Comprueba que los cambios aparezcan al actualizar la aplicación en el navegador.
¿Cómo optimizar el proyecto?
Aunque el componente ya esté visible, pueden existir ajustes de padding, márgenes o estructura que se deban realizar. Este es un excelente reto para reforzar y personalizar tu proyecto.
Finalmente, para fomentar el aprendizaje continuo, se te anima a personalizar y mejorar estos componentes. Haz una captura de pantalla y compártela en los comentarios para inspirarte e inspirar a otros. Siempre hay más por descubrir, como el diseño de patrones con Astro Iceland en las próximas lecciones. ¡Adelante, sigue aprendiendo y explorando!
Para que el social Media quede situado en el mismo sitio
en el archivo Footer.vue en donde estaba las parte de social colocar la etiqueta
<slot />
y luego solo envolver de la siguiente manera
<Footer><Social/></Footer>
Estoy aprendiendo un monton pero siento que la pagina esta asi
Literalmente nuestro proyecto es un sancocho, pero es muy interesante la integracion con astro, es muy facil
Hola a todos, mi solución al reto:
En el componente Vue, agregamos el slot donde queremos mostrar nuestro:
Luego en nuestro archivo ...slug, lo dejamos la siguiente manera:
Saludos
Hola, disculpen tengo un pequeño error con el archivo de tailwind.config.csj, el profe tiene el archivo como en la imagen.
Pero si yo le pongo la parte de require en la consola me arroja el siguiente error:
Y si quito el require me deja de mostrar los estilos, como solucionar ese error.
Recuerda que ese require hace referencia a un plugin que se instalo. En mi caso no lo instale y no lo tengo. Tailwind me funciona bien sin necesidad de ese plugin
Cuales serian los beneficios de utilizar estas diferentes librerías y cual seria el problema de utilizarlos. si hacemos componentes gigantes de React esto igual se renderizaría el lado del cliente y se demoraría al cargar?
El término Island se refiere a un componente de interfaz de usuario interactivo en una página estática. En la cual, pueden existir varias islas que puede ser desarrollada en diferentes Frameworks o librerías populares de JavaScript (React, Svelte, Vue, etc.), mezcladas en la misma página.
.
✨ Concepto clave
El patrón de arquitectura de la se construyen las islands se conoce como hidratación parcial o selectiva.
.
Funcionamiento de Astro
Si bien, Astro compila código para generar las páginas de nuestro sitio web, Astro no dispone de dicho código del lado del cliente, delegando dicha responsabilidad a un módulo de servidor para renderizar el contenido automáticamente, anticipando y eliminando JavaScript del build final.
.
✨ Concepto clave
Con este mecanismo, Astro mantiene todos los sitios web rápidos de forma predeterminada para mejorar el rendimiento y SEO.
.
Sin embargo, Astro entiende que algunas veces, por interacción y anatomía de la Isla que renderiza, es necesario emplear y dejar un mínimo de JavaScript para convertir la página en un SPA o Single-Page-Application. De ello, Astro nos delega la elección mediante su declaración client:* .
.
Beneficio de las Islas
El beneficio principal de construir Astro con Islas es el rendimiento, minimizando el producto final para que sea rápido en la carga sin JavaScript que lo sature.
.
Por su parte, las Islas nos permiten desarrollar Frameworks o librerías populares que nos permitan heredar o integrar para no recrear la rueda un Sistema de Diseño.
.
Por último, con la directiva client:* , le indicamos a Astro exactamente cómo y cuándo renderizar cada componente.
.
📌 Enlaces clave
Can I use Astro Components inside my Framework Components?
Can I Hydrate Astro Components?
Aquí dejo mi proyecto. Lo que hice fue colocar un margen de 6 (mb-6) en la clase de la etiqueta ul.
A mi no me agregó automáticamente, no se porqué, pero no se olviden: