vue2路由的详解

简介: vue2路由的详解
  1. 理解: 一个路由(route)就是一组映射关系(key - value),多个路由需要路由器(router)进行管理。
  2. 前端路由:key是路径,value是组件。


4.1 基本使用

安装vue-routernpm i vue-router

router配置项:

//引入VueRouter
import VueRouter from 'vue-router'
//引入Luyou 组件
import About from '../components/About'
import Home from '../components/Home'
//创建router实例对象,去管理一组一组的路由规则
const router = new VueRouter({
  routes:[
    {
      path:'/about',
      component:About
    },
    {
      path:'/home',
      component:Home
    }
  ]
})
//暴露router
export default router

实现切换(active-class可配置高亮样式)

<router-link active-class="active" to="/about">About</router-link>

指定展示位置

<router-view></router-view>


4.2 多级路由

  配置路由规则,使用children配置项:

routes:[
  {
    path:'/about',
    component:About,
  },
  {
    path:'/home',
    component:Home,
    children:[ //通过children配置子级路由
      {
        path:'news', //此处一定不要写:/news
        component:News
      },
      {
        path:'message',//此处一定不要写:/message
        component:Message
      }
    ]
  }
]

   跳转(要写完整路径):

<router-link to="/home/news">News</router-link>

    指定展示位置

<router-view></router-view>


4.3 query参数

    传递参数

<!-- 跳转并携带query参数,to的字符串写法 -->
<router-link :to="/home/message/detail?id=666&title=你好">跳转</router-link>
<!-- 跳转并携带query参数,to的对象写法 -->
<router-link 
  :to="{
    path:'/home/message/detail',
    query:{
       id:666,
            title:'你好'
    }
  }"
>跳转</router-link>

    接收参数:

$route.query.id
$route.query.title


4.4 命名路由(可以简化路由的跳转)

  1. 给路由命名:
{
  path:'/demo',
  component:Demo,
  children:[
    {
      path:'test',
      component:Test,
      children:[
        {
                      name:'hello' //给路由命名
          path:'welcome',
          component:Hello,
        }
      ]
    }
  ]
}

     简化跳转:

<!--简化前,需要写完整的路径 -->
<router-link to="/demo/test/welcome">跳转</router-link>
<!--简化后,直接通过名字跳转 -->
<router-link :to="{name:'hello'}">跳转</router-link>
<!--简化写法配合传递参数 -->
<router-link 
  :to="{
    name:'hello',
    query:{
       id:666,
            title:'你好'
    }
  }"
>跳转</router-link>


4.5 params参数

  • 配置路由,声明接收params参
{
  path:'/home',
  component:Home,
  children:[
    {
      component:Message,
      children:[
        {
          name:'xiangqing',
          path:'detail/:id/:title', //使用占位符声明接收params参数
          component:Detail
        }
      ]
    }
  ]
}

     传递参数

<!-- 跳转并携带params参数,to的字符串写法 -->
<router-link :to="/home/message/detail/666/你好">跳转</router-link>
<!-- 跳转并携带params参数,to的对象写法 -->
<router-link 
  :to="{
    name:'xiangqing',
    params:{
       id:666,
            title:'你好'
    }
  }"
>跳转</router-link>

特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!

     接收参数:

$route.params.id
$route.params.title


4.7 props配置

作用 :让路由组件更方便的收到参数

{
  name:'xiangqing',
  path:'detail/:id',
  component:Detail,
  //第一种写法:props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件
  // props:{a:900}
  //第二种写法:props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件
  // props:true
  //第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件
  props($route) {
    return {
      id: $route.query.id,
      title:$route.query.title,
      a: 1,
      b: 'hello'
    }
  }
}


4.7 的replace属性

   1.作用:控制路由跳转时操作浏览器历史记录的模式

   2.浏览器的历史记录有两种写入方式:分别为push和replace,push是追加历史记录,replace是替换当前记录。路由跳转时候默认为push

   3.如何开启replace模式:News


4.8 两个新的生命周期钩子

作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。

具体名字:

  • activated路由组件被激活时触发。
  • deactivated路由组件失活时触发。

这两个生命周期钩子需要配合前面的缓存路由组件使用(没有缓存路由组件不起效果)


注意

  路由组件通常存放在pages文件夹,一般组件通常存放在components文件夹。

  通过切换,“隐藏”了的路由组件,默认是被销毁掉的,需要的时候再去挂载。

  每个组件都有自己的$route属性,里面存储着自己的路由信息。

  整个应用只有一个router,可以通过组件的$router属性获取到。


目录
相关文章
|
2月前
|
JavaScript 前端开发 网络架构
4.vue路由
4.vue路由
20 1
|
3月前
|
缓存 JavaScript
一文彻底学会Vue路由
Vue Router简介,包括基本使用、嵌套路由、参数传递和路由守卫。首先,通过`npm i vue-router@3`安装,然后在`main.js`引入并应用。配置路由时,创建VueRouter实例,定义如`/home`、`/about`等路径及其对应组件。使用`&lt;router-link&gt;`进行切换,`&lt;router-view&gt;`展示组件。嵌套路由通过`children`配置多级路径,参数传递可使用`query`或`params`。路由守卫分为全局、独享和组件内三种,用于控制访问权限。
39 1
一文彻底学会Vue路由
|
11月前
【vue2项目总结】——路由相关总结
【vue2项目总结】——路由相关总结
36 0
|
JavaScript
vue获取当前路由
vue获取当前路由
73 0
|
9月前
vue2.0配置路由
vue2.0配置路由
43 0
|
9月前
|
JavaScript
vue路由配置
vue路由配置
22 0
|
11月前
|
前端开发 JavaScript API
Vue2:路由1
Vue2:路由1
71 1
|
11月前
|
缓存 JavaScript 前端开发
Vue2:路由2
Vue2:路由2
135 1
|
JavaScript
vue总结之vue路由使用
vue总结之vue路由使用
|
12月前
|
JavaScript
Vue路由(详解)
Vue路由(详解)