Cómo construir una interfaz de búsqueda completa en Vue
Clase 18 de 53 • Curso Profesional de Vue.js 2
Contenido del curso
CLI y Dev Tools
- 3

Instalación de Vue.js: Node, Dev Tools y CLI
06:13 min - 4

Crear una aplicación Vue con CLI y webpack
12:49 min - 5

Cómo funciona webpack.config.js
10:38 min - 6

Babel: transpilador de JavaScript moderno
05:06 min - 7

ESLint con Standard JS: linteo automático en webpack
15:34 min - 8

Configuración de Sass y Bulma en Vue
06:18 min - 9

Cómo configurar Pug en Vue con webpack
04:23 min - 10
Diseño de Mockups: Práctica y Colaboración en Comunidad
00:20 min - 11
Creación de Vistas con Mockups y Vue.js
00:32 min
Manipulación del DOM
- 12

Expresiones en Vue: sintaxis doble llave
03:49 min - 13

Diferencia entre v-show y v-if en el DOM
06:22 min - 14

Qué es data binding en Vue.js
04:11 min - 15

Computed properties en Vue.js: cómo crearlas
04:13 min - 16

Qué son los watchers de Vue
02:25 min - 17

Eventos Vue: directiva v-on y métodos format
06:12 min - 18

Cómo construir una interfaz de búsqueda completa en Vue
Viendo ahora - 19
Manipulación del DOM con Vue.js: Práctica y Ejercicios
03:00 min
REST y HTTP
Sistema de Componentes
- 23

Cómo crear componentes en Vue
08:46 min - 24

Componentes Layout en Vue con Bulma
09:50 min - 25

Reactividad en Vue: $set y Object.assign
06:14 min - 26

Hooks del ciclo de vida en Vue.js
05:38 min - 27

Comunicación padre-hijo con props en Vue
23:27 min - 28

Eventos en Vue: comunicar hijo a padre
12:04 min - 29

Slots: HTML dinámico en componentes Vue
13:42 min - 30

Plugin Event Bus: comunicar componentes sin relación en Vue
19:19 min
Vue Router
Extendiendo VueJS
Clases, Animaciones y Transiciones36
Vuex
- 39

Cómo Vuex centraliza estados en Vue
03:41 min - 40

Instalación de Vuex con estado único
17:32 min - 41

Cómo usar mutations y commit en Vuex
08:16 min - 42

Getters de Vuex: mapGetters y store sincronizado
07:35 min - 43

Cómo dispatch ejecuta actions asincrónicas en ViewX
07:54 min - 44

Instalación de Viewex en Platzi Music
26:37 min
Nuxt.js
Deploy a Producción con Now
Conclusiones
Bonus
Aprende a montar una interfaz de búsqueda en Vue con Bulma y sintaxis de Pack, enlazando datos con v-model, manejando eventos con @click y renderizando listas con before. Verás además cómo depurar errores comunes de Sass y webpack y cómo aprovechar propiedades computadas para mostrar resultados de forma reactiva.
¿Qué estructura HTML base se construye con Bulma y Pack?
Se parte de limpiar el HTML dejando solo el div con id app. Se arma una section.section como contenedor principal y dentro una nav.nav con clase hash shadow para decoración. El patrón en Pack es claro: nombre de elemento, punto para clase o hash para id. Bulma sugiere envolver el contenido en un container.
- Input con clase input e isLarge para ocupar el ancho total. Tipo texto con placeholder: buscar canciones.
- Dos enlaces como botones: a.button.isInfo.isLarge con texto buscar y a.button.isDanger.isLarge con el entity × para reiniciar la búsqueda.
- Un segundo container, hermano de nav dentro de section, para los resultados. Se usa columns y column para maquetar con flex box de Bulma.
La indentación en Pack define jerarquías: mover un bloque un nivel hacia adentro convierte un hermano en hijo y cambia el DOM. Si no se especifica elemento en clases como container o column, Pack asume un div por defecto.
Keywords y habilidades: - Bulma, section, nav, container, columns/column para layout responsivo. - input.isLarge, button.isInfo, button.isDanger para estilos. - × como entity HTML para la cruz del botón. - Indentación en Pack para relaciones padre-hijo en el DOM.
¿Cómo se enlaza la interfaz con el view model en Vue?
Se crea la propiedad search query con valor por defecto en string vacío y se enlaza al input con la directiva View Model: v-model a search query. Para legibilidad, es válido romper líneas de atributos largos sin errores de sintaxis.
Luego, se define el método search que imprime en consola this.search query. Se vincula al botón buscar con beyond:click o su atajo @click, apuntando a search.
Para contrastar, se muestra una versión en CodePen con JavaScript puro: se crean ids, se seleccionan nodos manualmente y se agregan event listener al click. El HTML es similar, pero con Vue el View Model y la estructura del componente evitan repetir selección de elementos y listeners, favoreciendo reutilización y escalabilidad.
Keywords y habilidades: - v-model para unión bidireccional con search query. - @click como atajo de beyond:click para eventos. - this.propiedad/método para acceder al View Model. - Console para verificar que el input y el evento funcionan. - CodePen y event listener como referencia de JavaScript puro.
¿Cómo se simulan y renderizan resultados con before y computed?
Se simula una búsqueda creando un array tracks por fuera del View Model con objetos de canciones (nombre y artista). En el View Model se declara tracks como array vacío y, al ejecutar search, se asigna this.tracks = tracks. Con las devtools de Vue en la tab View se verifica que la propiedad tracks se actualiza.
Para mostrar resultados, se usa la directiva before sobre el HTML de cada columna: T in tracks, donde T representa cada canción. Dentro de expresiones se imprimen T.nombre y T.artista separados por un guion.
Se agrega una clase Results al segundo container para margen de 50px. Si el estilo no se aplica, se revisa console o la terminal: un error típico es olvidar un punto y coma en Sass, lo que impide compilar; al corregirlo, webpack recompila y el margen aparece.
Finalmente, se crea una propiedad computada search message en computed que devuelve un texto con this.tracks.length, por ejemplo: encontrados 3. Al cambiar tracks, la propiedad se recalcula automáticamente. Se muestra en un párrafo con small.
Keywords y habilidades: - tracks como data simulada fuera del View Model y como estado dentro de él. - before (T in tracks) para renderizar listas. - Computed (search message) dependiente de tracks.length. - Sass: puntos y coma obligatorios para compilar. - webpack: revisar errores en console o terminal. - Vue devtools: inspección de props y computed reactivas.
¿Tienes dudas o ideas para mejorar la interfaz o la lógica de búsqueda? Comparte en comentarios qué parte te gustaría profundizar o automatizar.