上一篇内容我们主要了解了路由的基本用法,从本篇开始我们深入了解一下路由。

动态路由匹配

在开发中,我们经常需要把匹配某种模式的路由映射到同一个组件,例如有一个 User 组件用于显示用户信息,对于不同ID 的用户,都使用这个组件渲染。这就需要我们动态的对路由进行匹配,我们通过冒号:标记动态路由部分,例如 ursr/:id,user/1、user/2和user/sss

首先修改App.vue文件

<template><div id="app"><div id="nav"><router-link to="/book/1">百年孤独</router-link> |<router-link to="/book/2">麦田里的守望者</router-link></div><router-view/></div>
</template>

然后在目录src/view下添加Book.vue文件

<template><div><table><tr><th>图书编号</th><th>图书名称</th><th>图书作者</th><th>图书简介</th></tr><tr><td>{{ $route.params.id }} &emsp;</td><td>{{ book[$route.params.id - 1].title }} &nbsp;</td><td class="author">{{ book[$route.params.id - 1].author }} &emsp;</td><td>{{ book[$route.params.id - 1].content }}</td></tr></table></div>
</template>
<style>
.author {color: red;
}
</style>
<script>
export default {data() {return {book: [{id: 1,title: "麦田里的守望者",content:"塞林格将故事的起止局限于16岁的中学生霍尔顿·考尔菲德从离开学校到纽约游荡的三天时间内,并借鉴了意识流天马行空的写作方法,充分探索了一个十几岁少年的内心世界。",author: "【美】杰罗姆·大卫·塞林格",},{id: 2,title: "百年孤独",content:"作品描写了布恩迪亚家族七代人的传奇故事,以及加勒比海沿岸小镇马孔多的百年兴衰,反映了拉丁美洲一个世纪以来风云变幻的历史。",author: "加西亚·马尔克斯",},],};},
};
</script>

最后修改路由文件src/router/index.js

import Vue from 'vue';
import VueRouter from 'vue-router';
import Book from '../views/Book.vue';
Vue.use(VueRouter);const routes = [{path: '/book/:id',component: Book,
}];const router = new VueRouter({routes,
});export default router;

这样我们是使用了动态路由匹配,在代码中我们使用了$route.params,这个是路由对象的属性,表示一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。

查询参数

如果我们在URL地址上添加参数,根据参数的不同来确定显示的内容不同。
修改App.vue文件,需要修改之后的代码如下:

<router-link to="/book?id=1">百年孤独</router-link>
<router-link to="/book?id=2">麦田里的守望者</router-link>

修改路由文件src/router/index.js

import Vue from 'vue';
import VueRouter from 'vue-router';
import Book from '../views/Book.vue';
Vue.use(VueRouter);const routes = [{path: '/book',component: Book,
}];const router = new VueRouter({routes,
});export default router;

修改Book.vue组件

<td>{{ $route.query.id }} &emsp;</td>
<td>{{ book[$route.query.id - 1].title }} &nbsp;</td><td class="author">{{ book[$route.query.id - 1].author }} &emsp;</td>
<td>{{ book[$route.query.id - 1].content }}</td>

我们可以通过 路由对象中的 query属性查询参数, query属性表示一个 key/value 对象,表示 URL 查询参数。如果没有查询参数,则是个空对象。

通配符匹配

常规参数只会匹配被 /分隔的 URL 片段中的字符。如果想匹配任意路径,我们可以使用通配符 ( *):

{// 会匹配所有路径path: '*'
}
{// 会匹配以 `/user-` 开头的任意路径path: '/user-*'
}

当使用通配符路由时,请确保路由的顺序是正确的,也就是说含有通配符的路由应该放在最后。路由 { path: ‘*’ } 通常用于客户端 404 错误。```

当使用一个通配符时,$route.params 内会自动添加一个名为 pathMatch 参数。它包含了 URL 通过通配符被匹配的部分。

// 给出一个路由 { path: '/user-*' }
this.$router.push('/user-admin')
this.$route.params.pathMatch // 'admin'
// 给出一个路由 { path: '*' }
this.$router.push('/non-existing')
this.$route.params.pathMatch // '/non-existing'

路由对象是 表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL 匹配到的路由记录 (route records)。路由对象出现在多个地方:

  1. 在组件内,即 this.$route
  2. 在 $route 观察者回调内
  3. router.match(location) 的返回值
  4. 导航守卫的参数
  5. scrollBehavior 方法的参数

上面五种地方我们现在就了解了第一个,其他的我们后续会慢慢讲解。

路由对象中的属性:

  1. $route.path:字符串,对应当前路由的路径,总是解析为绝对路径,如 “/foo/bar”。
  2. $route.params:一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。
  3. $route.query:一个 key/value 对象,表示 URL 查询参数,如果没有查询参数,则是个空对象。
  4. $route.hash:当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。
  5. $route.fullPath:完成解析后的 URL,包含查询参数和 hash 的完整路径。
  6. $route.matched:一个数组,包含当前路由的所有嵌套路径片段的路由记录 。路由记录就是 routes 配置数组中的对象副本
  7. $route.name:当前路由的名称,如果有的话
  8. $route.redirectedFrom:如果存在重定向,即为重定向来源的路由的名字

vue路由——基础篇(二)相关推荐

  1. vue实战入门基础篇二:从零开始仿门户网站实例-开发框架搭建

    上一篇:vue实战入门基础篇一:从零开始仿门户网站实例-前期准备工作 vue实战入门基础篇二:从零开始仿门户网-2022-2-23 21:00:27 一.目录 第一篇:前期准备工作 第二篇:开发框架搭 ...

  2. mysql 基础篇(二) 账号、权限管理

    mysql 基础篇(二) 账号.权限管理.备份与还原 建立账号密码: Grant all on test.* to "cj"@"localhost" ident ...

  3. 用Kotlin撸一个图片压缩插件-插件基础篇(二)

    简述: 前两天写了篇用Kotlin撸一个图片压缩插件-导学篇,现在迎来了插件基础篇,没错这篇文章就是教你如何一步一步从零开始写一个插件,包括插件项目构建,运行,调试到最后的上线发布整个流程.如果你是插 ...

  4. Vue的基础认知二---vue的双向绑定/vue获取DOM节点

    在这篇博文之前,我们已经开了一个vue的头了,需要的小伙伴可以点击这个链接:Vue的基础认知一-构建环境/v指令的使用,好了,我们继续来看我们接下来要看的内容. 一.vue的双向绑定 mvvm框架: ...

  5. WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用

    从本篇开始,将正式讲解WF4.0,本文主要涉及如下内容:Activity介绍, WF4.0 中工作流的结构,通过WriteLine演示InArgument<T>参数的使用 目录 1     ...

  6. 字符变量赋值规则_Java的常量、变量、数据类型(基础篇二)

    标识符 标识符:是指在程序中自己定义的内容,如类名.方法名.变量名等等. 命名规则:是有硬性要求的 关键字:是指Java已经定义好的单词,具有特殊含义,比如public.static.class.vo ...

  7. 02 MSC类设备-基础篇(二)

    上一篇: https://blog.csdn.net/qq_40088639/article/details/110489923 四.Bulk-Only Transport协议传输模型 分析BusHo ...

  8. Python机器学习基础篇二《监督学习》

    前言 前期回顾: Python机器学习基础篇一<为什么用Python进行机器学习> 前面说过,监督学习是最常用也是最成功的机器学习类型之一.本章将会详细介绍监督学 习,并解释几种常用的监督 ...

  9. python进阶记录之基础篇二十六_Python进阶记录之基础篇(十六)

    回顾 在Python进阶记录之基础篇(十五)中,我们介绍了面向对象的基本概念以及Python中类和对象的基础知识,需要重点掌握类的创建和对象的使用.今天我们继续讲一下Python中面向对象的相关知识点 ...

最新文章

  1. 新兴内存技术准备突围
  2. MySQL重置root用户密码的方法
  3. 三、RabbitMQ安装
  4. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
  5. Marvell 88E1111 linux driver
  6. bash的一些小技巧
  7. Linux内存管理--物理内存分配【转】
  8. Transform(HDU-5637)
  9. 为底层元素注册监听器
  10. 操作系统 第二部分 进程管理(二)
  11. Atitit 项目管理(5)----------后勤管理与工具链支持管理
  12. pcie16x能插1x的卡嘛?_存储先锋,雷克沙633x TF卡评测
  13. ascii码二进制十进制十六进制对照表
  14. 多通道振弦传感器VTN416采集仪应用工程项目安全监测实用性强
  15. U盘winpe启动盘的制作
  16. 【python 去除文件名后缀或提取后缀】
  17. 地理信息系统的元数据、主数据、参考数据之间的区分
  18. ⑪(面试篇 2/3)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包含答案)。带面试你过关斩将,(赶紧过来背iOS八股文)
  19. github监控平台hawkeye搭建
  20. 随机森林预测财务报表是否舞弊

热门文章

  1. unity3d中如何将Hierarchy中的物体批量拖到Inspector中的数组中?
  2. 网络工程师--网络规划和设计案例分析(6)
  3. 购物网站被p.egou.com强制恶意劫持
  4. 乐吾乐2D可视化智慧光伏能源赋能方案
  5. 微型计算机逻辑元件有哪些,目前普遍使用的微型计算机所采用的逻辑元件有哪些...
  6. 测绘类专业计算机要学什么科目,科普下测绘工程专业属于什么门类
  7. 斐波那契数的时间复杂度、空间复杂度详解
  8. Hadoop web端打开hdfs上的文件问题
  9. [附源码]计算机毕业设计Python+uniapp基于Android 工厂考勤系统4h291(程序+源码+LW+远程部署)
  10. 万网服务器 https证书,教你申请免费https证书!