Vuejs
Tutorial Vuejs: Definición y manejo de rutas
Vue: Aprende a definir y manejar rutas en aplicaciones SPA con vue-router. Mejora la navegación en tu proyecto con esta guía completa.
Aprende Vuejs GRATIS y certifícateConfiguración y definición de rutas en el archivo routerjs
En Vue, la configuración de rutas se gestiona mediante el paquete vue-router
, que permite definir y manejar la navegación de una aplicación de una sola página (SPA).
Crea un archivo llamado router.js
en el directorio src
de tu proyecto. Este archivo será el encargado de definir las rutas de tu aplicación y su configuración. Comienza importando las funciones necesarias de vue-router
:
import { createRouter, createWebHistory } from 'vue-router';
El siguiente paso es definir las rutas. Las rutas son objetos que especifican el camino hacia un componente determinado. Aquí tienes un ejemplo básico de cómo definirlas:
const routes = [
{
path: '/',
name: 'Home',
component: () => import('./components/Home.vue')
},
{
path: '/about',
name: 'About',
component: () => import('./components/About.vue')
}
];
En este ejemplo, hemos definido dos rutas: una para el componente Home
y otra para el componente About
. Utilizamos la función de importación dinámica para mejorar el rendimiento mediante la carga diferida de los componentes.
Con las rutas definidas, el siguiente paso es crear una instancia del router. Utiliza createRouter
y pasa las rutas junto con el historial de navegación:
const router = createRouter({
history: createWebHistory(),
routes
});
createWebHistory
se utiliza para habilitar el modo de historial HTML5, lo que permite URLs limpias sin el hash #
en la barra de direcciones.
Por último, exporta el router para que pueda ser utilizado en tu aplicación:
export default router;
Para integrar este router en tu aplicación Vue, debes importarlo en el archivo principal de tu aplicación, usualmente main.js
, y registrarlo en la instancia de Vue:
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
createApp(App)
.use(router)
.mount('#app');
Este proceso completa la configuración básica de rutas en Vue. A partir de este punto, puedes navegar entre los componentes definidos utilizando el componente <router-link>
o mediante programación con router.push()
, asegurando una experiencia de navegación fluida y dinámica en tu aplicación.
Definición de rutas con nombres
En Vue, el uso de rutas con nombres es una práctica recomendada para manejar la navegación dentro de una aplicación de manera más clara y mantenible. Asignar nombres a las rutas permite facilitar la navegación programática y la generación de enlaces, especialmente en aplicaciones con estructuras de rutas complejas.
Para definir una ruta con un nombre, se utiliza el atributo name
en el objeto de configuración de la ruta. Este nombre debe ser único dentro del conjunto de rutas de la aplicación. Aquí tienes un ejemplo de cómo definir rutas con nombres:
const routes = [
{
path: '/',
name: 'Home',
component: () => import('./components/Home.vue')
},
{
path: '/about',
name: 'About',
component: () => import('./components/About.vue')
},
{
path: '/contact',
name: 'Contact',
component: () => import('./components/Contact.vue')
}
];
En este ejemplo, cada ruta tiene un nombre asociado: Home
, About
y Contact
. Estos nombres pueden ser utilizados para navegar de forma programática en lugar de depender de las rutas de URL directamente.
El uso de rutas con nombres también es ventajoso al crear enlaces en los componentes de Vue. El componente <router-link>
puede utilizar el atributo :to
para especificar el nombre de la ruta en lugar de la ruta de URL:
<template>
<div>
<router-link :to="{ name: 'Home' }">Inicio</router-link>
<router-link :to="{ name: 'About' }">Acerca de</router-link>
<router-link :to="{ name: 'Contact' }">Contacto</router-link>
</div>
</template>
En este ejemplo, los enlaces navegan a las rutas correspondientes utilizando sus nombres, lo que proporciona una capa adicional de abstracción y reduce la dependencia de las rutas específicas de URL.
Además, las rutas con nombres simplifican la gestión de rutas anidadas y la reutilización de componentes dentro de diferentes rutas. Si en el futuro se decide cambiar la estructura de las rutas, el uso de nombres facilita la actualización sin necesidad de modificar múltiples partes del código.
Es importante tener en cuenta que los nombres de las rutas deben ser únicos en toda la aplicación para evitar conflictos y asegurar una navegación coherente. La consistencia en la nomenclatura y la organización de las rutas con nombres es clave para mantener el código legible y fácil de mantener.
Uso de parámetros de rutas y query strings
En Vue, los parámetros de rutas y los query strings son fundamentales para crear rutas dinámicas y manejar la comunicación entre componentes a través de la URL. Los parámetros de rutas permiten definir partes variables de la URL que pueden ser capturadas y utilizadas dentro de los componentes, mientras que los query strings proporcionan una forma de pasar información adicional a través de la URL de manera opcional.
Para definir parámetros de rutas, utiliza los dos puntos :
seguidos del nombre del parámetro en la definición del path
dentro de router.js
. Considera el siguiente ejemplo:
const routes = [
{
path: '/user/:id',
name: 'UserProfile',
component: () => import('./components/UserProfile.vue')
}
];
En este caso, :id
es un parámetro de ruta que puede capturar cualquier valor que se pase en la URL después de /user/
. Para acceder a este parámetro dentro del componente UserProfile.vue
, se utiliza el objeto route
proporcionado por vue-router
:
<!-- UserProfile.vue -->
<template>
<div>
<h1>Perfil de Usuario</h1>
<p>ID de usuario: {{ userId }}</p>
</div>
</template>
<script setup>
import { useRoute } from 'vue-router';
const route = useRoute();
const userId = route.params.id;
</script>
Aquí, useRoute
es un composable que devuelve el objeto route
, permitiendo acceder a params
para obtener el valor del parámetro id
.
Los query strings se definen como parte de la URL después del símbolo ?
, y se estructuran en pares clave-valor. Para navegar programáticamente a una ruta con query strings, puedes usar :to
pasando un objeto que incluya query
:
<template>
<h1>Inicio</h1>
<router-link :to="{ name: 'UserProfile', params: { id: 123 }, query: { ref: 'homepage' } }">Perfil de
usuario</router-link>
</template>
En este ejemplo, además del parámetro de ruta id
, se pasa un query string ref
con el valor homepage
. Dentro del componente, los query strings se acceden a través del mismo objeto route
:
<!-- UserProfile.vue -->
<template>
<div>
<h1>Perfil de Usuario</h1>
<p>ID de usuario: {{ userId }}</p>
<p>Referencia: {{ referrer }}</p>
</div>
</template>
<script setup>
import { useRoute } from 'vue-router';
const route = useRoute();
const userId = route.params.id;
const referrer = route.query.ref;
</script>
Es importante tener en cuenta que mientras los parámetros de rutas son obligatorios para que la ruta coincida, los query strings son opcionales, permitiendo mayor flexibilidad en la forma en que se estructuran las URLs y se transmiten los datos.
Cuando trabajas con rutas que incluyen tanto parámetros como query strings, es esencial validar y manejar adecuadamente estos valores dentro de los componentes para asegurar que la aplicación se comporte de manera predecible y segura. Esto puede incluir la verificación de la existencia de parámetros o la aplicación de lógica de negocio basada en los valores recibidos.
Además, al definir rutas dinámicas, es recomendable establecer los tipos de datos esperados para los parámetros en la documentación del componente, facilitando su uso y mantenimiento dentro del equipo de desarrollo.
Manejo de rutas con props
En Vue, el manejo de rutas con props
es una técnica que permite pasar datos directamente a los componentes a través de las rutas, facilitando la interacción y el flujo de datos en la aplicación. Esta funcionalidad es especialmente útil cuando se desea que un componente reciba parámetros de ruta de manera más directa y tipada. Al utilizar props
, se evita el acoplamiento del componente con el objeto route
, lo que mejora la testabilidad y la reutilización del componente.
Para habilitar el paso de props
en una ruta, se debe establecer la propiedad props
en la configuración de la ruta dentro de router.js
. Esta propiedad puede ser un booleano, un objeto o una función, dependiendo de cómo se desee procesar los datos.
Uso de props
como booleano
Cuando props
se configura como true
, los parámetros de ruta se pasan automáticamente como props
al componente. Considera el siguiente ejemplo:
const routes = [
{
path: '/user/:id',
name: 'UserProfile',
component: () => import('./components/UserProfile.vue'),
props: true
}
];
En este caso, el parámetro id
se pasará automáticamente como un prop
al componente UserProfile
. Dentro del componente, se puede acceder directamente a este prop
:
<!-- UserProfileProps.vue -->
<template>
<div>
<h1>Perfil de Usuario</h1>
<p>ID de usuario: {{ userId }}</p>
</div>
</template>
<script setup>
import { defineProps } from 'vue';
const props = defineProps(['id']);
const userId = props.id;
</script>
Uso de props
como objeto
Si se desea pasar información adicional que no está en la URL, se puede configurar props
como un objeto estático:
const routes = [
{
path: '/settings',
name: 'UserSettings',
component: () => import('./components/UserSettings.vue'),
props: { defaultView: 'profile' }
}
];
En este ejemplo, el componente UserSettings
recibirá defaultView
como un prop
, sin necesidad de que esté presente en la URL.
Uso de props
como función
Para un control más avanzado, props
puede ser una función que recibe el objeto route
y devuelve un objeto de props
. Esto es útil para transformar o validar los datos antes de pasarlos al componente:
const routes = [
{
path: '/order/:orderId',
name: 'OrderDetails',
component: () => import('./components/OrderDetails.vue'),
props: route => ({ orderId: parseInt(route.params.orderId) })
}
];
Aquí, el orderId
se convierte a un número entero antes de ser pasado al componente OrderDetails
:
<!-- OrderDetails.vue -->
<template>
<div>
<h1>Detalles del Pedido</h1>
<p>ID del pedido: {{ orderId }}</p>
</div>
</template>
<script setup>
import { defineProps } from 'vue';
const props = defineProps(['orderId']);
const orderId = prop.orderId
</script>
El uso de props
en rutas proporciona una forma clara y mantenible de pasar datos a los componentes, eliminando la necesidad de manipular el objeto route
directamente dentro del componente. Esto facilita la separación de responsabilidades, permitiendo que los componentes se centren únicamente en la presentación y lógica de negocio, mientras que el enrutador maneja la lógica de navegación y gestión de rutas.
Creación de rutas con alias
En Vue, los alias de rutas ofrecen una forma flexible de definir múltiples caminos de acceso a un mismo componente. Esto es útil cuando se desea que una ruta sea accesible a través de diferentes URLs, proporcionando una experiencia de usuario más intuitiva o cuando se necesita mantener compatibilidad con URLs antiguas.
Para definir un alias en una ruta, basta con agregar la propiedad alias
en el objeto de configuración de la ruta dentro de router.js
. El valor de alias
puede ser una cadena o un array de cadenas, permitiendo definir uno o varios alias para la misma ruta.
Considera el siguiente ejemplo donde se define una ruta con alias:
const routes = [
{
path: '/dashboard',
name: 'Dashboard',
component: () => import('./components/Dashboard.vue'),
alias: ['/home', '/inicio']
}
];
En este caso, el componente Dashboard
es accesible a través de las URLs /dashboard
, /home
y /inicio
. Esto significa que cualquier navegación a cualquiera de estas rutas renderizará el mismo componente.
Los alias son particularmente útiles en escenarios donde se requiere una transición suave entre diferentes versiones de una aplicación o cuando se desea proporcionar accesos rápidos a ciertas secciones desde diferentes partes de la aplicación. Por ejemplo, si se está migrando de una estructura de URLs antigua a una nueva, los alias permiten que las URLs antiguas sigan funcionando mientras se redirige a los usuarios a las nuevas rutas.
Es importante notar que, a diferencia de las redirecciones, los alias no cambian la URL visible en la barra de direcciones del navegador. Esto significa que, aunque el componente renderizado es el mismo, la URL permanece como fue solicitada originalmente por el usuario. En contraste, una redirección cambiaría la URL a la ruta destino.
Para manejar alias de rutas de manera efectiva, es recomendable documentar claramente su uso dentro del equipo de desarrollo, asegurando que todos entiendan la razón detrás de cada alias y cómo se espera que se comporten en diferentes contextos de navegación. Además, se debe tener cuidado de no crear alias que puedan causar ambigüedad o confusión en la navegación de la aplicación.
Si se necesita realizar lógica específica basada en la URL actual, como en el caso de análisis de logs o estadísticas, es importante recordar que los alias no afectan la ruta registrada en el objeto route
, por lo que el análisis debe considerar todas las posibles rutas que lleven al mismo componente.
En resumen, los alias de rutas en Vue son una herramienta poderosa para mejorar la navegación y la experiencia de usuario al permitir múltiples accesos a los mismos componentes sin alterar la estructura principal de la aplicación.
Ejercicios de esta lección Definición y manejo de rutas
Evalúa tus conocimientos de esta lección Definición y manejo de rutas con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Solicitud HTTP con Axios
Estilización de componentes en Vue.js
Comunicación de componentes con props
Uso de hooks de ciclo de vida en Vue
Introducción a los componentes
Introducción a Vue
Navegación programática y redirección
Uso de la directiva v-if en Vuejs
Crear componente Composition API
Realizar una solicitud GET con Fetch API en Vue
Uso avanzado de los composables
Galería de imágenes con navegación y rutas
Uso de rutas anidadas y dinámicas
Definición y manejo de rutas en Vue
Uso de la directiva v-for en Vuejs
Manejo de eventos con v-on
Crear un componente con Options API en Vue
Creación de rutas con Vue Router
Uso básico de los composables
Binding bidireccional con v-model y defineModel
Instalación y configuración
Lista de tareas básica en Vuejs
Uso de provide e inject
Gestión de tareas con estado global y API
Introducción a la sintaxis de plantillas
Implementar reactividad con ref y reactive
Componente Vue con Suspense
Evaluación test de conocimientos Vuejs
Todas las lecciones de Vuejs
Accede a todas las lecciones de Vuejs y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Vue Y Su Ecosistema
Introducción Y Entorno
Instalar Y Configurar Vue Con Vite
Introducción Y Entorno
Introducción A La Sintaxis De Plantillas
Componentes
Introducción A Componentes
Componentes
Componentes Con Options Api
Componentes
Componentes Con Composition Api
Componentes
Renderizado Condicional Con V-if
Componentes
Renderizado Iterativo Con V-for
Componentes
Props Y Comunicación Entre Componentes
Componentes
Manejo De Eventos En Vue Con V-on
Componentes
Binding Bidireccional Con V-model Y Definemodel
Componentes
Estilización De Componentes
Componentes
Reactividad Con Ref Y Reactive
Composición Y Reactividad
Ciclo De Vida Con Composition Api
Composición Y Reactividad
Composition Api: Provide E Inject
Composición Y Reactividad
Introducción A Los Composables
Composición Y Reactividad
Uso Avanzado De Composables
Composición Y Reactividad
Introducción A Vue Router
Navegación Y Enrutamiento
Definición Y Manejo De Rutas
Navegación Y Enrutamiento
Rutas Anidadas Y Dinámicas
Navegación Y Enrutamiento
Navegación Programática Y Redirección
Navegación Y Enrutamiento
Solicitudes Http Con Fetch Api
Interacción Http Con Apis De Backend
Solicitudes Http Con Axios
Interacción Http Con Apis De Backend
Introducción A Suspense
Interacción Http Con Apis De Backend
Evaluación Test De Conocimientos Vuejs
Evaluación
Certificados de superación de Vuejs
Supera todos los ejercicios de programación del curso de Vuejs y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Configurar y definir rutas en Vue utilizando
vue-router
. - Asignar nombres a las rutas para facilitar la navegación programática.
- Utilizar parámetros de rutas y query strings para rutas dinámicas.
- Pasar
props
a los componentes a través de las rutas. - Implementar alias de rutas para múltiples accesos al mismo componente.