前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >(七)高级路由配置语法

(七)高级路由配置语法

作者头像
老怪兽
发布2023-02-22 18:29:39
发布2023-02-22 18:29:39
37400
代码可运行
举报
运行总次数:0
代码可运行
高级路由匹配语法和优先权
一、多个动态参数
代码语言:javascript
代码运行次数:0
复制
// 传递参数写法
url: /users/100/posts/50
写法:/users/:userId/posts/:postsId

// 获取参数方法
this.$route.params
{
  userId: 100,
  postId: 50
}
二、重复 URL 路径模式匹配
代码语言:javascript
代码运行次数:0
复制
/usters/:userId/posts/:postId/
/users/100/posts/50

// 上面这个写法只会匹配到 /users/100,后面的数据不会在匹配
  • 有时候我们可能会获取多个 URL 进行多级 URL 请求
代码语言:javascript
代码运行次数:0
复制
// 获取商品
/clothes

// 获取商品并且获取商品子分类
/clothes/t-shirt

// 或者时后面的子分类不固定
/clothes/t-shirt/long-sleeve
  • 如果有以上这种需求我们可以使用正则表达式进行匹配 +、*、?
三、正则表达式匹配多个路径
  1. + 至少出现一次
代码语言:javascript
代码运行次数:0
复制
/:categories+
// 可以匹配到如下这几类 URL 地址  但是不可以匹配 / 也就是没有任何内容的情况
/clothes
/clothes/t-shirt
  1. * 出现0到多次
代码语言:javascript
代码运行次数:0
复制
/:categories*
// 可以匹配到如下这几类 URL 地址  并且可以匹配 /
/clothes
/clothes/t-shirt
/
  1. ? 出现0次到1次
代码语言:javascript
代码运行次数:0
复制
/:categories?
// 可以匹配到如下这几类 URL 地址  不能出现多次,比如 /clothes/t-shirt
/clothes
/

注意 +、*、? 只能用于动态参数,像 /categores? 这种写法是错误的

四、高级正则表达式匹配路径
  • 如果以上的简单正则匹配无法满足,可以使用一下高级正则表达式拉匹配
代码语言:javascript
代码运行次数:0
复制
// 语法 url ([正则表达式])
// 例子
/posts/:title([a-zA-Z0-9-]+)

// 解析出来就是
/pots/how-to-use-vue-router
// 但是不能匹配-因为+是至少匹配一次
/pots/what-is+
五、匹配 404
代码语言:javascript
代码运行次数:0
复制
/:notFound(.*)/*
六、匹配优先级
  • 路由匹配的优先级是按照 path 来决定的
代码语言:javascript
代码运行次数:0
复制
// 例如
/:postId
/about
// 上面两个路径 /about 优先及更高,因为他是个具体的路径(固定写死的)
// 匹配的时候,会先查找路径中有没有,没有在去查找动态的,如果有多个动态的会按照他们在route中的顺序决定
/:postID    // 先执行-因为他在前面
/:userId    // 后执行-因为他在后面
七、路由可视化工具

路由可视化工具open in new window

-他们的分数越高优先级就越高,分数相同优先级就相同,如果优先级相同就以 他在 route 中的顺序决定,前面的先执行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年11月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高级路由匹配语法和优先权
  • 一、多个动态参数
  • 二、重复 URL 路径模式匹配
  • 三、正则表达式匹配多个路径
  • 四、高级正则表达式匹配路径
  • 五、匹配 404
  • 六、匹配优先级
  • 七、路由可视化工具
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档