Creación de Interfaz con Vue.js y Framework CSS Bulma

Clase 18 de 53Curso Profesional de Vue.js 2

Resumen

¿Cómo aplicar conceptos de Vue.js en nuestro código?

Es hora de ver cómo los conceptos adquiridos pueden implementarse en el código. Vamos a crear una aplicación básica de búsqueda usando Vue.js y el framework CSS Bulma, que facilitará la tarea de construir interfaces elegantes y responsivas.

¿Cómo estructurar nuestro HTML base con Bulma?

Primero, mantendremos el div con el ID app para montar la aplicación. Aquí usaremos clases de Bulma para estructurar nuestro HTML. Los pasos a seguir son:

  1. Eliminar contenido innecesario: Borraremos el contenido del HTML excepto el div con ID app.
  2. Utilizar Bulma para la base: Crearemos elementos como section, nav, y container con las clases de Bulma.
  3. Agregar interactividad: Insertemos un input para búsquedas y dos botones, utilizando la etiqueta a en vez de button para un estilo uniforme.

El código HTML sería algo similar a esto:

<div id="app">
  <section class="section">
    <nav class="nav has-shadow">
      <div class="container">
        <input class="input is-large" placeholder="Buscar canciones" type="text">
        <a class="button is-info is-large">BUSCAR</a>
        <a class="button is-danger is-large">&times;</a>
      </div>
    </nav>
    <div class="container results">
      <div class="columns is-multiline">
        <!-- Resultados de búsqueda -->
      </div>
    </div>
  </section>
</div>

¿Cómo gestionar datos y eventos con Vue.js?

Veamos cómo gestionar datos dentro del ViewModel y cómo ligarlos a la interacción del usuario.

  1. Propiedad searchQuery: Creamos esta propiedad en el ViewModel, inicializada como un string vacío y enlazada con el input usando v-model.
  2. Método de búsqueda: Imprime en consola el valor de searchQuery al hacer clic en el botón BUSCAR, usando el evento @click.

El código Vue.js se vería así:

data() {
  return {
    searchQuery: '',
    tracks: []
  };
},
methods: {
  search() {
    console.log(this.searchQuery);
    this.tracks = mockTracks; // mockTracks son datos simulados de canciones
  }
}

¿Cómo renderizar resultados de búsqueda automáticamente?

Para mostrar los resultados, utilizamos una directiva v-for y creamos una lista fija de canciones.

Ejemplo de estructura de datos simulados:

const mockTracks = [
  { name: 'Muchacha', artist: 'Luis Alberto Spinetta' },
  { name: 'Hoy', artist: 'El Pepo' },
  { name: 'I Was Made', artist: 'Kiss' }
];

Y para renderizar en el DOM:

<div v-for="track in tracks" :key="track.name" class="column">
  <p>{{ track.name }} - {{ track.artist }}</p>
</div>

¿Por qué es importante la indentación y cómo afecta a Vue.js?

La indentación es clave en Vue.js debido a que la estructura del código define cómo los componentes y elementos están relacionados. Un error común es pensar que un bloque está al nivel equivocado, lo que puede romper la lógica de la aplicación.

¿Cómo incorporar propiedades computadas en Vue.js?

Las propiedades computadas nos permiten realizar cálculos basados en los datos reactivos automáticamente.

computed: {
  searchMessage() {
    return `Encontrados ${this.tracks.length}`;
  }
}

Integraremos este conteo dinámico a la interfaz como feedback al usuario, mejorando la experiencia de uso.

Usando herramientas de desarrollo de Vue.js

Las herramientas de desarrollo de Vue permiten inspeccionar componentes en tiempo real. Esto es fundamental para verificar que las propiedades y los métodos se estén ejecutando correctamente y para depurar errores más rápidamente.

Esta base nos posiciona para dar el próximo paso, que es conectar estos conceptos con API RESTful, lo cual exploraremos a continuación. Esto impulsará tus habilidades de desarrollo con Vue.js al siguiente nivel y abrirá un mundo de nuevas posibilidades en aplicaciones web interactivas y dinámicas.