vue路由——基础篇(二)
上一篇内容我们主要了解了路由的基本用法,从本篇开始我们深入了解一下路由。
动态路由匹配
在开发中,我们经常需要把匹配某种模式的路由映射到同一个组件,例如有一个 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 }}  </td><td>{{ book[$route.params.id - 1].title }} </td><td class="author">{{ book[$route.params.id - 1].author }}  </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 }}  </td>
<td>{{ book[$route.query.id - 1].title }} </td><td class="author">{{ book[$route.query.id - 1].author }}  </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)。路由对象出现在多个地方:
- 在组件内,即 this.$route
- 在 $route 观察者回调内
- router.match(location) 的返回值
- 导航守卫的参数
- scrollBehavior 方法的参数
上面五种地方我们现在就了解了第一个,其他的我们后续会慢慢讲解。
路由对象中的属性:
- $route.path:字符串,对应当前路由的路径,总是解析为绝对路径,如 “/foo/bar”。
- $route.params:一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。
- $route.query:一个 key/value 对象,表示 URL 查询参数,如果没有查询参数,则是个空对象。
- $route.hash:当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。
- $route.fullPath:完成解析后的 URL,包含查询参数和 hash 的完整路径。
- $route.matched:一个数组,包含当前路由的所有嵌套路径片段的路由记录 。路由记录就是 routes 配置数组中的对象副本
- $route.name:当前路由的名称,如果有的话
- $route.redirectedFrom:如果存在重定向,即为重定向来源的路由的名字
vue路由——基础篇(二)相关推荐
- vue实战入门基础篇二:从零开始仿门户网站实例-开发框架搭建
上一篇:vue实战入门基础篇一:从零开始仿门户网站实例-前期准备工作 vue实战入门基础篇二:从零开始仿门户网-2022-2-23 21:00:27 一.目录 第一篇:前期准备工作 第二篇:开发框架搭 ...
- mysql 基础篇(二) 账号、权限管理
mysql 基础篇(二) 账号.权限管理.备份与还原 建立账号密码: Grant all on test.* to "cj"@"localhost" ident ...
- 用Kotlin撸一个图片压缩插件-插件基础篇(二)
简述: 前两天写了篇用Kotlin撸一个图片压缩插件-导学篇,现在迎来了插件基础篇,没错这篇文章就是教你如何一步一步从零开始写一个插件,包括插件项目构建,运行,调试到最后的上线发布整个流程.如果你是插 ...
- Vue的基础认知二---vue的双向绑定/vue获取DOM节点
在这篇博文之前,我们已经开了一个vue的头了,需要的小伙伴可以点击这个链接:Vue的基础认知一-构建环境/v指令的使用,好了,我们继续来看我们接下来要看的内容. 一.vue的双向绑定 mvvm框架: ...
- WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用
从本篇开始,将正式讲解WF4.0,本文主要涉及如下内容:Activity介绍, WF4.0 中工作流的结构,通过WriteLine演示InArgument<T>参数的使用 目录 1 ...
- 字符变量赋值规则_Java的常量、变量、数据类型(基础篇二)
标识符 标识符:是指在程序中自己定义的内容,如类名.方法名.变量名等等. 命名规则:是有硬性要求的 关键字:是指Java已经定义好的单词,具有特殊含义,比如public.static.class.vo ...
- 02 MSC类设备-基础篇(二)
上一篇: https://blog.csdn.net/qq_40088639/article/details/110489923 四.Bulk-Only Transport协议传输模型 分析BusHo ...
- Python机器学习基础篇二《监督学习》
前言 前期回顾: Python机器学习基础篇一<为什么用Python进行机器学习> 前面说过,监督学习是最常用也是最成功的机器学习类型之一.本章将会详细介绍监督学 习,并解释几种常用的监督 ...
- python进阶记录之基础篇二十六_Python进阶记录之基础篇(十六)
回顾 在Python进阶记录之基础篇(十五)中,我们介绍了面向对象的基本概念以及Python中类和对象的基础知识,需要重点掌握类的创建和对象的使用.今天我们继续讲一下Python中面向对象的相关知识点 ...
最新文章
- 新兴内存技术准备突围
- MySQL重置root用户密码的方法
- 三、RabbitMQ安装
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
- Marvell 88E1111 linux driver
- bash的一些小技巧
- Linux内存管理--物理内存分配【转】
- Transform(HDU-5637)
- 为底层元素注册监听器
- 操作系统 第二部分 进程管理(二)
- Atitit 项目管理(5)----------后勤管理与工具链支持管理
- pcie16x能插1x的卡嘛?_存储先锋,雷克沙633x TF卡评测
- ascii码二进制十进制十六进制对照表
- 多通道振弦传感器VTN416采集仪应用工程项目安全监测实用性强
- U盘winpe启动盘的制作
- 【python 去除文件名后缀或提取后缀】
- 地理信息系统的元数据、主数据、参考数据之间的区分
- ⑪(面试篇 2/3)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包含答案)。带面试你过关斩将,(赶紧过来背iOS八股文)
- github监控平台hawkeye搭建
- 随机森林预测财务报表是否舞弊
热门文章
- unity3d中如何将Hierarchy中的物体批量拖到Inspector中的数组中?
- 网络工程师--网络规划和设计案例分析(6)
- 购物网站被p.egou.com强制恶意劫持
- 乐吾乐2D可视化智慧光伏能源赋能方案
- 微型计算机逻辑元件有哪些,目前普遍使用的微型计算机所采用的逻辑元件有哪些...
- 测绘类专业计算机要学什么科目,科普下测绘工程专业属于什么门类
- 斐波那契数的时间复杂度、空间复杂度详解
- Hadoop web端打开hdfs上的文件问题
- [附源码]计算机毕业设计Python+uniapp基于Android 工厂考勤系统4h291(程序+源码+LW+远程部署)
- 万网服务器 https证书,教你申请免费https证书!