Aprende a instalar y configurar View Router paso a paso para construir una single page application funcional, ordenada y sin errores. Desde el comando de npm hasta el uso de router-view y el manejo de estados con v-if, aquí tienes un flujo claro y práctico basado en el código real.
¿Cómo instalar y habilitar view router en la app?
Para empezar, se usa una librería oficial mantenida por el mismo Core Team del framework. La documentación es completa y explica instalación y características. La integración requiere instalar la dependencia, crear las rutas y registrar el router en la instancia global de View.
Instala la dependencia con npm.
Crea un archivo de rutas y asocia path con componentes.
Importa las rutas en main.js y registra el router.
Pasa la instancia de router a la instancia principal.
// src/main.jsimportViewfrom'view'importViewRouterfrom'view en router'importroutesfrom'@/routes'importAppfrom'./App.view'View.use(ViewRouter)const router =newViewRouter({ routes })newView({ router,render:h=>h(App)}).$mount('#app')
Claves del setup:
Importar dependencias sin ./ ni @/ indica que vienen de npm.
Declarar un array de rutas y exportarlo por defecto.
Asociar path y component; opcionalmente usar name para navegación programática.
¿Qué refactor del app mejora la arquitectura con rutas?
El objetivo es que el componente principal quede mínimo y estructural, delegando la lógica a componentes de página. Se crea un componente Search y se mueve allí el contenido que no pertenece al esqueleto global.
Duplica App.view como Components/Search.view.
En Search.view: usa <main>, elimina header, footer e imports extra.
Quita el import del CSS global de Search.view.
En App.view: deja solo estructura base, sin lógica, con header y footer.
Inserta router-view entre header y footer para el contenido dinámico.
Separación de responsabilidades: App.view gestiona la estructura; Search.view gestiona la página.
Escalabilidad: cada ruta tendrá su componente dedicado.
Mantenibilidad: menos acoplamiento entre el router y la UI.
¿Cómo resolver errores comunes del player con directivas v-if?
En la consola surgió un error: intentar leer la propiedad images de algo undefined al cargar el Player sin una canción seleccionada. El componente accedía a track.album.images cuando aún no existía track. Solución: renderizado condicional con v-if para evitar acceder a datos inexistentes.
Usa v-if para esperar a que track exista.
Verifica también que track.album tenga valor.
Así evitas lecturas de propiedades sobre undefined.
Ejemplo en Player.view:
<template>
<section v-if="track && track.album">
<img :src="track.album.images[0]" alt="cover" />
<!-- resto del player -->
</section>
</template>
<script>
export default {
props: { track: Object }
}
</script>
Buenas prácticas señaladas:
En objetos de configuración, separa propiedades con coma para evitar errores de compilación.
Mantén fuera del DOM los componentes que dependen de datos aún no cargados.
Comprueba en la console y corrige antes de continuar.
Con esto, el Search Component se renderiza, se pueden buscar canciones, reproducirlas y no aparecen errores al iniciar. Próximo paso natural: rutas programáticas y parametrizables para flujos más avanzados.
¿Tienes dudas o una mejora que sumar? Comparte en comentarios qué parte del flujo te gustaría profundizar: instalación, refactor o manejo de estados con v-if.