Creación de Componentes en Vue.js con Bulma para Platzi Music

Clase 24 de 53Curso Profesional de Vue.js 2

Resumen

¿Cómo estructurar eficazmente una aplicación en Vue?

Cuando trabajas en el desarrollo de aplicaciones, tener una estructura organizada puede marcar la diferencia entre un proyecto mantenible o uno caótico. Siguiendo las buenas prácticas, a continuación te guiaré a través de cómo estructurar tu proyecto utilizando componentes en Vue.js, especialmente para una aplicación musical, como Platzi Music.

¿Dónde crear los componentes?

La creación de componentes en una aplicación Vue comienza por establecer una estructura en el directorio que sea lógica y fácil de seguir:

  1. Carpeta 'components':
    • Es recomendable alojar todos los componentes en una carpeta específica llamada components. Aunque no es la única opción, esta práctica ayuda a mantener orden en el proyecto.
  2. Carpeta 'layout' dentro de 'components':
    • Dentro de components, crea una subcarpeta llamada layout para separar componentes relacionados con la estructura principal de la aplicación, como el Header y Footer.

¿Cómo crear y estilizar el componente Footer?

Al diseñar un Footer usando el framework CSS Bulma, puedes mejorar visualmente tu aplicación con estilos predefinidos.

<template>
  <footer class="footer">
    <div class="content has-text-centered">
      <p>Code with ❤️ by [Tu Nombre]</p>
    </div>
  </footer>
</template>
  • Bulma classes: Utiliza footer, content y has-text-centered para darle estilo y centrar el contenido.
  • Edición básica: Elimina secciones de scripts y estilos no usados en el componente inicial.

¿Cómo incorporar el Footer en el proyecto?

Para integrar el nuevo componente Footer, sigue estos pasos:

  1. Importar el Componente en App.vue:
    • Utiliza un prefijo como pm para diferenciar componentes del proyecto respecto a librerías de terceros.
    • Realiza el import de este modo:
import PmFooter from './component/layout/footer.vue';
  1. Declarar el Componente Localmente:
    • Añade el componente a la opción components de la instancia de Vue para usarlo localmente.
components: {
  PmFooter
}
  1. Incluir el Componente en la Plantilla:

    • Utiliza el estilo kebab-case para incluir el componente dentro del HTML:
<pm-footer></pm-footer>

¿Cómo crear y estilizar el componente Header?

El componente Header usa también Bulma para aumentar la estética y funcionalidad:

<template>
  <section class="hero is-success">
    <div class="hero-head">
      <nav class="nav">
        <div class="container">
          <div class="nav-left">
            <a class="nav-item">
              <strong>🎵 PlatziMusic</strong>
            </a>
          </div>
          <div class="nav-right nav-menu"></div>
        </div>
      </nav>
    </div>
    <div class="hero-body">
      <div class="container has-text-centered">
        <h1 class="title">PlatziMusic</h1>
        <h2 class="subtitle">Canciones que están buenísimas</h2>
      </div>
    </div>
  </section>
</template>
  • Clases de Bulma: Emplea hero y is-success para crear una cabecera atractiva y personalizable.

¿Cómo resolver problemas comunes al integrar componentes?

  1. Error de "Root Element":

    • Asegúrate de tener un único componente raíz en tu template. Si encuentras errores, verifica la correcta indentación y estructura para evitar duplicación de raíces.
  2. Compilación de Vue con errores:

    • Revisa que todos los componentes y niveles de anidación estén perfectamente estructurados. Vue puede arrojar errores si encuentra espacios o tabulaciones inconsistentes.

¿Cómo seguir mejorando con Vue y Bulma?

Es clave seguir explorando la documentación de Bulma y Vue para ampliar tus capacidades de desarrollo. La práctica constante te permitirá crear interfaces aún más atractivas y funcionales. No te detengas y sigue perfeccionando tus habilidades de programación; el mundo del desarrollo web está lleno de oportunidades para innovar y destacar.

¡Sigue creando y aprendiendo! Recuerda que cada línea de código te acerca más a tu objetivo de ser un desarrollador experto.