Para crear varios archivos desde la consola puede utilzar el siguiente comando
touch {Header,Main,Timeline,Sidebar}.svelte
¿Cómo estructuramos la aplicación Pugstagram?
En esta clase, aprenderemos a organizar nuestra aplicación Pugstagram mediante una estructura clara y eficiente. Este es un aspecto crucial cuando buscamos desarrollar aplicaciones robustas y escalables. A través de una separación limpia de componentes, podemos gestionar el código de manera más eficiente y facilitar futuras actualizaciones.
¿Qué componentes identificamos en Pugstagram?
Al observar nuestra aplicación, podemos identificar varios componentes clave:
Además, dentro del Main, tenemos subcomponentes como el perfil, un cajón de historias, carrusel de fotos y una sección de comentarios.
¿Cómo creamos la estructura en el editor de código?
Para empezar a construir nuestra aplicación, crearemos una carpeta llamada components, donde almacenaremos cada uno de estos componentes definidos. Este es un paso esencial para mantener una arquitectura ordenada y coherente.
components/ Header.svelte Main.svelte Sidebar.svelte Timeline.svelte
¿Cómo configuramos la aplicación Svelte?
Con los componentes identificados, es momento de integrarlos en nuestra aplicación Svelte. Utilizaremos la estructura de App.svelte para importar y preparar nuestros componentes, incluso antes de crearlos. Aquí te muestro cómo hacerlo:
<script> // Importamos los componentes desde la carpeta components import Header from '../components/Header.svelte'; import Main from '../components/Main.svelte'; import Sidebar from '../components/Sidebar.svelte'; import Timeline from '../components/Timeline.svelte'; </script> // Renderizamos los componentes importados <Header /> <Main> <Timeline /> <Sidebar /> </Main>
¿Cómo creamos y configuramos los componentes?
Con la estructura básica lista, procedemos a crear cada componente en la carpeta components. Asegúrate de seguir las convenciones de nombrado, utilizando mayúsculas para la inicial del componente.
Header.svelte:
<div class="header">Header</div>
Main.svelte:
<div class="main-container"> <slot></slot> </div>
Sidebar.svelte:
<div class="sidebar">Sidebar</div>
Timeline.svelte:
<div class="timeline">Timeline</div>
El uso de slot en Main.svelte permite que este componente reciba contenido anidado, como Timeline y Sidebar, facilitando una mayor flexibilidad en la construcción de la aplicación.
¿Cómo solucionamos errores al compilar?
Un error común al inicializar nuestra aplicación puede ser el no encontrar correctamente ciertos archivos debido a rutas mal configuradas. Verificar la consola del navegador nos brinda pistas sobre posibles errores, tales como faltas de acceso a directorios correctos. Para abordar esto, aseguramos que cada importación apunta al lugar correcto, y utilizamos ../ para navegar adecuadamente entre carpetas.
// Asegúrate de estar en el directorio correcto al importar import Header from '../components/Header.svelte';
Con esta configuración, hemos logrado establecer una base sólida para nuestra aplicación, permitiéndonos incluso resolver errores de manera eficiente. ¡Sigue adelante con confianza! Exploraremos más funcionalidades en las próximas etapas.
En esta clase, aprenderemos a organizar nuestra aplicación Pugstagram mediante una estructura clara y eficiente. Este es un aspecto crucial cuando buscamos desarrollar aplicaciones robustas y escalables. A través de una separación limpia de componentes, podemos gestionar el código de manera más eficiente y facilitar futuras actualizaciones.
Al observar nuestra aplicación, podemos identificar varios componentes clave:
Además, dentro del Main, tenemos subcomponentes como el perfil, un cajón de historias, carrusel de fotos y una sección de comentarios.
Para empezar a construir nuestra aplicación, crearemos una carpeta llamada components, donde almacenaremos cada uno de estos componentes definidos. Este es un paso esencial para mantener una arquitectura ordenada y coherente.
components/
Header.svelte
Main.svelte
Sidebar.svelte
Timeline.svelte
Con los componentes identificados, es momento de integrarlos en nuestra aplicación Svelte. Utilizaremos la estructura de App.svelte para importar y preparar nuestros componentes, incluso antes de crearlos. Aquí te muestro cómo hacerlo:
<script>
// Importamos los componentes desde la carpeta components
import Header from '../components/Header.svelte';
import Main from '../components/Main.svelte';
import Sidebar from '../components/Sidebar.svelte';
import Timeline from '../components/Timeline.svelte';
</script>
// Renderizamos los componentes importados
<Header />
<Main>
<Timeline />
<Sidebar />
</Main>
Con la estructura básica lista, procedemos a crear cada componente en la carpeta components. Asegúrate de seguir las convenciones de nombrado, utilizando mayúsculas para la inicial del componente.
Header.svelte:
<div class="header">Header</div>
Main.svelte:
<div class="main-container">
<slot></slot>
</div>
Sidebar.svelte:
<div class="sidebar">Sidebar</div>
Timeline.svelte:
<div class="timeline">Timeline</div>
El uso de slot en Main.svelte permite que este componente reciba contenido anidado, como Timeline y Sidebar, facilitando una mayor flexibilidad en la construcción de la aplicación.
Un error común al inicializar nuestra aplicación puede ser el no encontrar correctamente ciertos archivos debido a rutas mal configuradas. Verificar la consola del navegador nos brinda pistas sobre posibles errores, tales como faltas de acceso a directorios correctos. Para abordar esto, aseguramos que cada importación apunta al lugar correcto, y utilizamos ../ para navegar adecuadamente entre carpetas.
// Asegúrate de estar en el directorio correcto al importar
import Header from '../components/Header.svelte';
Con esta configuración, hemos logrado establecer una base sólida para nuestra aplicación, permitiéndonos incluso resolver errores de manera eficiente. ¡Sigue adelante con confianza! Exploraremos más funcionalidades en las próximas etapas.
Para crear varios archivos desde la consola puede utilzar el siguiente comando
touch {Header,Main,Timeline,Sidebar}.svelte
También les recomiendo la extensión Relative Path para vscode que permite buscar de forma sencilla los archivos para completar la ruta y no escribirla toda, aquí el enlace:
https://marketplace.visualstudio.com/items?itemName=jakob101.RelativePath
Con Emmet puedes generar la estructura de forma sencilla con:
Header+Main>Timeline+Sidebar
<slot /> : Le indica al componente que aceptará componentes hijos.
Se puede automatizar la creación de componentes con un script como el siguiente:
#!/bin/bash
for componentName in "$@"
do
echo "creating file $componentName.svelte"
touch "$componentName.svelte"
printf "<script>\n\n</script>\n\n<style>\n\n</style>\n\n<div class=\"$componentName\">\n\n</div>" > "$componentName.svelte"
done
Lo guardan, le agregan permisos de ejecución y lo agregan a la variable PATH
La próxima vez que necesiten crear uno o varios componentes abren el terminal, ponen el nombre del archivo con el que guardaron este script, seguido de uno o varios nombres para los componentes que quieran crear.
Ejemplo: Yo llame al archivo que contiene el script "newSvelteComponent", para crear dos componentes abro el terminal dentro de la carpeta components y ejecuto:
$ newSvelteComponent Componente1 Componente2
como resultado se crean dos archivos llamados Componente1.svelte y Componente2.svelte, cada uno con la siguiente estructura:
<script>
</script>
<style>
</style>
<div class="nombreDelComponente">
</div>
Para los gustosos de Emmet, les comparto el enlace de la documentación :
div.main>{Header}
Yo recomiendo utilizar un alias en webpack, a partir de la indexación de su archivo webpack, para manejar una indexación que utilizamos mucho:
...
resolve: {
extensions: ["*", ".mjs", ".js", ".svelte"],
alias: {
"@": path.resolve(__dirname, "./src"),
"@Components": path.resolve(__dirname, "./src/components")
}
},
...
pero no es fácil entender esos errores en consola y peor aun cuando están en ingles eso a uno lo estresa demasiado, ustedes que aconsejan compañeros aparte de leer el error, porque yo puedo leerlo pero y si no entiendo lo que dice, como me guío.
Además de usar slots, también los puedes usar nombrados:
<SomeComponent>
<slot name="box"/>
</SomeComponent>
Y cuando lo quieres usar
<SomeComponent>
<div slot="box">
<h2>Nunca pares de aprender</h2>
</div>
</SomeComponent/>
Esto es muy útil sobretodo cuando tu componente se usa en distintos lugares pero tiene variaciones que a lo mejor no puedes solucionar simplemente con props. Aquí tienes más información: Named slots
Una duda con la estructura mencionada en los recursos de la clase, si el Header y el Timeline están separados en App, ¿de qué forma compartirán los datos de los likes y el usuario entre ellos?
Estaba pasando saliba con el 'saide bar' o algo asi.
Pero 'dedugido' ??? En serio ??