Rutas en Vue

Sistema de rutas en Vue.js

Vue no incorpora un sistema de rutas por defecto como Angular, sin embargo es muy sencillo de instalar mediante npm.

Instalar paquete de rutas en Vue

  1. npm install --save vue-router

Crear rutas en Vue (main.js)

Las rutas se crean mediante un array de objetos indicando la ruta y el componente y a continuación, se crea un nuevo objeto de rutas incluyendo dicho array.

  1. const routes = [
  2. {path: [ruta1], component: [Componente1]},
  3. {path: [ruta2], component: [Componente2]},
  4. ...
  5. ];
  6. const router = new VueRouter({
  7.     routes,
  8. mode: 'history'
  9. })

Para activar las rutas creadas de forma global se incluye en el objeto Vue del archivo main.js, habiendo antes importado todos los componentes requeridos, incluyendo la declaración del paquete anteriormente instalado.

main.js

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import VueRouter from 'vue-router';
  4. import HomeComponent from './components/HomeComponent.vue';
  5. import MiComponente from './components/MiComponente';
  6. Vue.config.productionTip = false
  7. Vue.use(VueRouter);
  8. const routes = [
  9. {path:'/home',component: HomeComponent},
  10. {path:'/mi-componente', component: MiComponente}
  11. ];
  12. const router = new VueRouter({
  13. routes,
  14. mode: 'history'
  15. });
  16. new Vue({
  17. router,
  18. render: h => h(App),
  19. }).$mount('#app')

Es conveniente especificar que si se asigna un nombre distinto de router al objeto VueRouter no podrá ser simplificado y por tanto será necesario incluir la propiedad y el valor.

  1. const myRouter = new VueRouter({
  2. routes,
  3. mode: 'history'
  4. });
  5. new Vue({
  6. router: myRouter,
  7. render: h => h(App),
  8. }).$mount('#app')

Finalmente se añade la etiqueta router-view en la vista del componente principal o se sustituye por los componentes añadidos de forma estática. De esta forma tan sencilla y con una etiqueta similar a la etiqueta router-outlet de Angular se cargan los distintos componentes sin necesidad de recargar toda la página.

  1. <template>
  2. <div id="app">
  3. <Header></Header>
  4. <!--<HomeComponent></HomeComponent>-->
  5. <!--<MiComponente></MiComponente>-->
  6. <router-view></router-view>
  7. <Footer></Footer>
  8. </div>
  9. </template>

Añadir parámetros en las rutas

Los parámetros de una ruta se separan con barra ( / ) y deben ir precedidos del signo de dos puntos ( : ). Para indicar que el parámetro de una ruta sea opcional debe ir seguido del signo de interrogante ( ).

  1. ...
  2. {path: '/editar/:id', component: EditUsuario },
  3. {path: '/mi-componente/:id?',name:'mi-componente', component: MiComponente },
  4. ...

Capturar parámetros de la url

Para capturar un parámetro desde un componente se genera mediante la propiedad params del objeto route indicando el nombre del parámetro.

  1. <script>
  2. export default {
  3. name: 'MiComponente',
  4. miParametro: null,
  5. mounted(){
  6. this.miParametro = this.$route.params.id;
  7. }
  8. }
  9. script>

Crear enlace en la vista de un componente

Los enlaces se manejan con la etiqueta router-link y el atributo o directiva to y pueden redirigir a una ruta simple o una ruta con parámetros.

  • Enlace de ruta simple mediante atributo
  1. <router-link to="/home">Inicio</router-link>
  • Enlace de ruta con parámetros mediante atributo
  1. <router-link to="/mi-componente/10">MiComponente</router-link>
  • Enlace de ruta mediante directiva
  1. <router-link :to="{name:'mi-componente',params:{id:'10'}}">MiComponente</router-link>


Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso