10. Vue-router 路由

本文详细介绍了Vue Router的基本概念和用法,包括前端路由的工作原理,Vue Router的安装配置,如创建路由模块、在main.js中挂载、使用router-link和router-view。此外,还讲解了路由重定向、路由嵌套,包括子路由声明、重定向和默认子路由,并探讨了动态路由的实现和参数获取。最后,提到了查询参数和完整路径的访问方式。
摘要由CSDN通过智能技术生成

目录

一、什么是路由?

二、什么是前端路由?

三、前端路由的工作方式?

四、vue-router 的基本用法

1. 什么是 vue-router 

2. vue-router 安装 和 配置步骤

2.1 安装 vue-router 包

2.2 创建路由模块

2.3 在main.js 文件中  导入并挂载路由模块

2.4 声明路由链接和占位符

2.5 在路由模块 index.js 写入以下代码

五、什么是路由重定向?

六、路由嵌套 

1. 通过 children 属性声明子路由规则

2. 重定向子路由

3. 默认子路由

 七、动态路由

八、拓展


一、什么是路由?

路由简单来说就是:对应关系

二、什么是前端路由?

前端路由:指的是就是Hash地址组件之间的对应关系

三、前端路由的工作方式?

  1. 用户点击了页面上的路由链接

  2. 导致了URL地址栏中的Hash值发生了变化

  3. 前端路由监听到了Hash地址的变化

  4. 前端路由把当前Hash地址对应的组件渲染到浏览器中


四、vue-router 的基本用法

1. 什么是 vue-router 

vue-routervue.js 官方 给出的 路由解决方案,只能结合vue项目进行使用,能够轻松的管理 SPA(单页面应用程序) 项目中组件的切换。

2. vue-router 安装 和 配置步骤

2.1 安装 vue-router 包

    npm i vue-router@3..5.2 -S

2.2 创建路由模块

src源代码目录下,新建 router/index.js 路由模块,并初始化如下代码:

2.2.1 导入Vue 和 VueRouter 的 包

import Vue from 'vue'

import VueRouter from 'vue-router'

2.2.2 使用 Vue.use() 把vue-router安装为vue项目插件

Vue.use(VueRouter)

2.2.3 创建 VueRouter 的实例对象

const router = new VueRouter()

2.2.4 向外导出 router 实例对象

export default router

2.3 在main.js 文件中  导入并挂载路由模块

import router from '@/router/index.js'

new Vue({

  render: h => h(App),

  // 在vue项目中要想把路由用起来,必须要把路由实例对象,通过下面方式进行挂载

  // router: 路由的实例对象

  router

}).$mount('#app')

2.4 声明路由链接和占位符

2.4.1 当安装和配置了vue-router后,就可以使用 router-link 来替代 a 链接

    <router-link to='/home'>首页</router-link>

    <router-link to='/movie'>电影</router-link>

    <router-link to='/about'>关于</router-link>

    <hr />

2.4.2 只要在项目中安装和配置了vue-router,就可以使用 router-view 这个组件了。它的作用很单纯,就是 占位符。最终展示的组件要在这里展示

<router-view></router-view>

2.5 在路由模块 index.js 写入以下代码

const router = new VueRouter({

  // routes 是一个数组,作用:定义Hash地址 与 组件 之间的对应关系

  routes: [

// 路由规则

    {path: '/home', component: Home},

    {path: '/movie', component: Movie},

    {path: '/about', component: About}

  ]

})


五、什么是路由重定向?

路由重定向指的是:当用户访问地址A的时候,强制用户跳转到地址C,从而展示特定的组件页面。

通过路由规则的 redirect 属性,指定一个新的路由地址,可以很方便的设置路由的重定向

const router = new VueRouter({

  // routes 是一个数组,作用:定义Hash地址 与 组件 之间的对应关系

  routes: [

    // 重定向路由规则

    // 当用户访问 / 的时候,通过redirect 属性跳转到 /home 对应的路由规则

    {path: '/', redirect: '/home'},

    // 路由规则

    {path: '/home', component: Home},

    {path: '/movie', component: Movie},

    {path: '/about', component: About}

  ]

})


六、路由嵌套 

定义:通过路由实现组件的嵌套展示,叫做路由嵌套

1. 通过 children 属性声明子路由规则

在src/router/index.js 路由模块中,导入需要的组件,并使用 children 属性声明子路由规则

const router = new VueRouter({

  // routes 是一个数组,作用:定义Hash地址 与 组件 之间的对应关系

  routes: [

    // 重定向路由规则

    // 当用户访问 / 的时候,通过redirect 属性跳转到 /home 对应的路由规则

    {path: '/', redirect: '/home'},

    // 路由规则

    {path: '/home', component: Home},

    {path: '/movie', component: Movie},

    {path: '/about', component: About, children: [

      // 声明子路由规则

      {path: 'tab1', component: Tab1},

      {path: 'tab2', component: Tab2}

    ]}

  ]

})

2. 重定向子路由

const router = new VueRouter({

  // routes 是一个数组,作用:定义Hash地址 与 组件 之间的对应关系

  routes: [

    // 重定向路由规则

    // 当用户访问 / 的时候,通过redirect 属性跳转到 /home 对应的路由规则

    {path: '/', redirect: '/home'},

    // 路由规则

    {path: '/home', component: Home},

    {path: '/movie', component: Movie},

    {path: '/about', component: About, redirect: '/about/tab1', children: [

      // 声明子路由规则

      {path: 'tab1', component: Tab1},

      {path: 'tab2', component: Tab2}

    ]}

  ]

})

3. 默认子路由

默认子路由,如果 children数组 中,某个路由规则的 path 值为空字符串,则这条路由规则,叫做“默认子路由”

这个时候就不需要重定向子路由了,代码修改如下:

About 组件:

 <!-- 子级路由链接 -->

  <router-link to="/about">tab1组件</router-link>

  <router-link to="/about/tab2">tab组件</router-link>

index.js 路由模块:

const router = new VueRouter({

  // routes 是一个数组,作用:定义Hash地址 与 组件 之间的对应关系

  routes: [

    // 重定向路由规则

    // 当用户访问 / 的时候,通过redirect 属性跳转到 /home 对应的路由规则

    {path: '/', redirect: '/home'},

    // 路由规则

    {path: '/home', component: Home},

    {path: '/movie', component: Movie},

    {path: '/about', component: About, children: [

      // 默认子路由,如果children数组中,某个路由规则的path值为空字符串,则这条路由规则叫做“默认子路由”,这个时候就不需要重定向了

      // 声明子路由规则

      {path: '', component: Tab1},

      {path: 'tab2', component: Tab2}

    ]}

  ]

})


 七、动态路由

动态路由指的是:把 Hash 地址可变的部分 定义为 参数项,从而提高路由规则的复用性

在vue-router 中,使用 英文的冒号 : 来定义路由的参数项。id就是动态参数项,并不一定是id,可以定义为其他的名字

    <router-link to='/movie/1'>雷神</router-link>

    <router-link to='/movie/2'>钢铁侠</router-link>

    <router-link to='/movie/3'>超人</router-link>

const router = new VueRouter({

  // routes 是一个数组,作用:定义Hash地址 与 组件 之间的对应关系

  routes: [

    // 需求:在Movie组件中,希望根据定义的参数项 mid的值,展示对应电影详情信息

    {path: '/movie/:mid', component: Movie},

})

需求:在Movie组件中,希望根据定义的参数项 id的值,展示对应电影详情信息,可以通过两种方法:

方法1:

this.$route.params.mid 拿到这个值。可以省略this,直接写 $route.params.mid

<h3>Movie 组件 ---{{ this.$route.params.mid}}</h3>

方法2:

开启路由的 props 属性

可以为路由规则开启 props 传参,从而方便的拿到动态参数的值

1、 index.js 路由模块里修改下列代码

const router = new VueRouter({

  // routes 是一个数组,作用:定义Hash地址 与 组件 之间的对应关系

  routes: [

    // 需求:在Movie组件中,希望根据定义的参数项 mid的值,展示对应电影详情信息

    {path: '/movie/:mid', component: Movie, props: true},

})

2、Movie 组件中,定义props属性

<script>

export default {

  name: 'Movie',

// 接收props 数据

  props: ['mid']

}

</script>


八、拓展

注意1:在Hash地址中 / 后面的参数项,叫做“路径参数” -->

在路由“参数对象”中,需要使用this.$route.params 来访问路径参数 -->

注意2:在Hash地址中 ? 后面的参数项,叫做“查询参数” -->

在路由“参数对象”中,需要使用 this.$route.query 来访问查询参数 -->

注意3:在 this.$route 中,path只是路径部分;fullPath 是完整的地址 -->

例如:fullPath: "/movie/1?name=zs&age=20"  完整的路径

path: "/movie/1"  路径部分

<router-link to='/movie/1?name=zs&age=20'>雷神</router-link>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_LiuP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值