Vue Router es la biblioteca oficial de enrutamiento para Vue.js. Permite crear aplicaciones de una sola página (SPA) con múltiples vistas, donde los usuarios pueden navegar sin recargar la página. En esta lección, aprenderemos los conceptos básicos de Vue Router y cómo integrarlo en una aplicación Vue.
Contenido
- ¿Qué es Vue Router?
- Instalación de Vue Router
- Configuración Básica de Vue Router
- Definición de Rutas
- Navegación entre Rutas
- Ejemplo Práctico
- Ejercicio Práctico
- ¿Qué es Vue Router?
Vue Router es una biblioteca que permite gestionar la navegación en aplicaciones Vue.js. Proporciona una forma declarativa de definir rutas y manejar la navegación entre diferentes vistas de la aplicación.
Características Principales:
- Declaración de Rutas: Define rutas de manera declarativa.
- Navegación Programática: Permite la navegación mediante código.
- Rutas Anidadas: Soporta rutas dentro de otras rutas.
- Guardias de Navegación: Permite ejecutar lógica antes de entrar o salir de una ruta.
- Lazy Loading: Carga componentes de manera diferida para mejorar el rendimiento.
- Instalación de Vue Router
Para instalar Vue Router, puedes usar npm o yarn. Asegúrate de tener Node.js y npm instalados en tu sistema.
O con yarn:
- Configuración Básica de Vue Router
Después de instalar Vue Router, necesitas configurarlo en tu aplicación Vue. Aquí hay un ejemplo básico de cómo hacerlo:
Paso 1: Crear un archivo de configuración de rutas
Crea un archivo router.js
en la raíz de tu proyecto o en una carpeta específica para la configuración de rutas.
// src/router.js import Vue from 'vue'; import VueRouter from 'vue-router'; import Home from './components/Home.vue'; import About from './components/About.vue'; Vue.use(VueRouter); const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ]; const router = new VueRouter({ routes }); export default router;
Paso 2: Integrar Vue Router en la instancia principal de Vue
Modifica tu archivo principal main.js
para incluir el router.
// src/main.js import Vue from 'vue'; import App from './App.vue'; import router from './router'; Vue.config.productionTip = false; new Vue({ router, render: h => h(App), }).$mount('#app');
- Definición de Rutas
Las rutas se definen en un arreglo de objetos, donde cada objeto representa una ruta. Cada ruta tiene al menos dos propiedades: path
y component
.
Ejemplo de Definición de Rutas
const routes = [ { path: '/', component: Home }, { path: '/about', component: About }, { path: '/contact', component: Contact } ];
- Navegación entre Rutas
Enlaces de Navegación
Para navegar entre rutas, puedes usar el componente <router-link>
.
<template> <div> <nav> <router-link to="/">Home</router-link> <router-link to="/about">About</router-link> <router-link to="/contact">Contact</router-link> </nav> <router-view></router-view> </div> </template>
Navegación Programática
También puedes navegar entre rutas mediante código usando el objeto router
.
- Ejemplo Práctico
Vamos a crear una pequeña aplicación con tres rutas: Home, About y Contact.
Estructura del Proyecto
Código de los Componentes
Home.vue
<template> <div> <h1>Home Page</h1> <p>Welcome to the Home Page!</p> </div> </template> <script> export default { name: 'Home' }; </script>
About.vue
<template> <div> <h1>About Page</h1> <p>This is the About Page.</p> </div> </template> <script> export default { name: 'About' }; </script>
Contact.vue
<template> <div> <h1>Contact Page</h1> <p>Get in touch with us!</p> </div> </template> <script> export default { name: 'Contact' }; </script>
Configuración del Router
router.js
import Vue from 'vue'; import VueRouter from 'vue-router'; import Home from './components/Home.vue'; import About from './components/About.vue'; import Contact from './components/Contact.vue'; Vue.use(VueRouter); const routes = [ { path: '/', component: Home }, { path: '/about', component: About }, { path: '/contact', component: Contact } ]; const router = new VueRouter({ routes }); export default router;
Integración en la Instancia Principal
main.js
import Vue from 'vue'; import App from './App.vue'; import router from './router'; Vue.config.productionTip = false; new Vue({ router, render: h => h(App), }).$mount('#app');
Plantilla Principal
App.vue
<template> <div id="app"> <nav> <router-link to="/">Home</router-link> <router-link to="/about">About</router-link> <router-link to="/contact">Contact</router-link> </nav> <router-view></router-view> </div> </template> <script> export default { name: 'App' }; </script>
- Ejercicio Práctico
Ejercicio
Crea una aplicación Vue con las siguientes rutas:
/
: Página de inicio con un mensaje de bienvenida./services
: Página de servicios con una lista de servicios ofrecidos./contact
: Página de contacto con un formulario de contacto.
Solución
Estructura del Proyecto
Código de los Componentes
Home.vue
<template> <div> <h1>Home Page</h1> <p>Welcome to our website!</p> </div> </template> <script> export default { name: 'Home' }; </script>
Services.vue
<template> <div> <h1>Services Page</h1> <ul> <li>Service 1</li> <li>Service 2</li> <li>Service 3</li> </ul> </div> </template> <script> export default { name: 'Services' }; </script>
Contact.vue
<template> <div> <h1>Contact Page</h1> <form> <label for="name">Name:</label> <input type="text" id="name" name="name"> <label for="email">Email:</label> <input type="email" id="email" name="email"> <button type="submit">Submit</button> </form> </div> </template> <script> export default { name: 'Contact' }; </script>
Configuración del Router
router.js
import Vue from 'vue'; import VueRouter from 'vue-router'; import Home from './components/Home.vue'; import Services from './components/Services.vue'; import Contact from './components/Contact.vue'; Vue.use(VueRouter); const routes = [ { path: '/', component: Home }, { path: '/services', component: Services }, { path: '/contact', component: Contact } ]; const router = new VueRouter({ routes }); export default router;
Integración en la Instancia Principal
main.js
import Vue from 'vue'; import App from './App.vue'; import router from './router'; Vue.config.productionTip = false; new Vue({ router, render: h => h(App), }).$mount('#app');
Plantilla Principal
App.vue
<template> <div id="app"> <nav> <router-link to="/">Home</router-link> <router-link to="/services">Services</router-link> <router-link to="/contact">Contact</router-link> </nav> <router-view></router-view> </div> </template> <script> export default { name: 'App' }; </script>
Conclusión
En esta lección, hemos aprendido los conceptos básicos de Vue Router, cómo instalarlo y configurarlo, y cómo definir y navegar entre rutas. Con estos conocimientos, puedes empezar a crear aplicaciones Vue.js con múltiples vistas y una navegación fluida. En la próxima lección, profundizaremos en la configuración de Vue Router y exploraremos características más avanzadas como rutas dinámicas y anidadas.
Curso de Vue.js
Módulo 1: Introducción a Vue.js
- ¿Qué es Vue.js?
- Configuración del Entorno de Desarrollo
- Creando Tu Primera Aplicación Vue
- Entendiendo la Instancia de Vue
Módulo 2: Conceptos Básicos de Vue.js
- Sintaxis de Plantillas
- Vinculación de Datos
- Propiedades Computadas y Observadores
- Vinculación de Clases y Estilos
- Renderizado Condicional
- Renderizado de Listas
Módulo 3: Componentes de Vue.js
- Introducción a los Componentes
- Props y Eventos Personalizados
- Slots
- Componentes Dinámicos y Asíncronos
- Comunicación entre Componentes
Módulo 4: Vue Router
- Introducción a Vue Router
- Configuración de Vue Router
- Rutas Dinámicas
- Rutas Anidadas
- Guardias de Navegación
Módulo 5: Gestión de Estado con Vuex
- Introducción a Vuex
- Estado, Getters, Mutaciones y Acciones
- Módulos en Vuex
- Usando Vuex en Componentes
- Patrones Avanzados de Vuex
Módulo 6: Directivas de Vue.js
Módulo 7: Plugins de Vue.js
Módulo 8: Pruebas en Vue.js
- Pruebas Unitarias con Vue Test Utils
- Pruebas de Extremo a Extremo con Cypress
- Simulación de Dependencias
Módulo 9: Conceptos Avanzados de Vue.js
- Funciones de Renderizado y JSX
- Renderizado del Lado del Servidor (SSR) con Nuxt.js
- API de Composición de Vue 3
- Optimización del Rendimiento
Módulo 10: Construcción y Despliegue de Aplicaciones Vue.js
- Construcción para Producción
- Despliegue de Aplicaciones Vue.js
- Integración y Despliegue Continuos (CI/CD)