Instalación de View Router paso a paso

Clase 32 de 53Curso Profesional de Vue.js 2

Resumen

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.

Ejecuta la instalación:

npm i -S view en router

Define rutas en src/routes.js:

// src/routes.js import Search from '@/components/Search.view' const routes = [ { path: '/', name: 'Search', component: Search } ] export default routes

Registra el router en main.js:

// src/main.js import View from 'view' import ViewRouter from 'view en router' import routes from '@/routes' import App from './App.view' View.use(ViewRouter) const router = new ViewRouter({ routes }) new View({ 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.

App.view minimal con router-view:

<template> <div id="app"> <PMHeader /> <router-view /> <PMFooter /> </div> </template> <script> import PMHeader from '@/components/PMHeader.view' import PMFooter from '@/components/PMFooter.view' export default { components: { PMHeader, PMFooter } } </script>

Beneficios del refactor:

  • 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.