vue-router4之路由匹配语法

文章目录

  • 简介
  • 参数中的匹配
  • 可重复的参数
  • sensitive 与 strict

专栏目录请点击

简介

这里我们需要明白一些正则表达式 点击

参数中的匹配

语法

在参数后面直接加一个括号,括号中写正则表达式,表示当前参数值匹配什么类型

const routes = [
  // /:orderId -> 仅匹配数字
  { path: '/:orderId(\\d+)' },
  // /:productName -> 匹配其他任何内容
  { path: '/:productName' },
]

\d表示任意的数字,+表示一个或者多个,还要注意加转义字符

可重复的参数

这里我们充分利用了正则表达式中的特殊字符+ * ?

const routes = [
  // /:chapters ->  匹配 /one, /one/two, /one/two/three, 等
  { path: '/:chapters+' },
  // /:chapters -> 匹配 /, /one, /one/two, /one/two/three, 等
  { path: '/:chapters*' },
  // 匹配 /1, /1/2, 等
  { path: '/:chapters(\\d+)+' },
  // 匹配 /, /1, /1/2, 等
  { path: '/:chapters(\\d+)*' },
  // 匹配 /users 和 /users/posva
  { path: '/users/:userId?' },
  // 匹配 /users 和 /users/42
  { path: '/users/:userId(\\d+)?' },
]

传参的时候我们要提供一个数组

// 给定 { path: '/:chapters*', name: 'chapters' },
router.resolve({ name: 'chapters', params: { chapters: [] } }).href
// 产生 /
router.resolve({ name: 'chapters', params: { chapters: ['a', 'b'] } }).href
// 产生 /a/b

// 给定 { path: '/:chapters+', name: 'chapters' },
router.resolve({ name: 'chapters', params: { chapters: [] } }).href
// 抛出错误,因为 `chapters` 为空 

sensitive 与 strict

默认情况下,路由不区分大小写,并且能匹配尾部是否有斜线的路由

const router = createRouter({
  history: createWebHistory(),
  routes: [
    // 将匹配 /users/posva 而非:
    // - /users/posva/ 当 strict: true
    // - /Users/posva 当 sensitive: true
    { path: '/users/:id', sensitive: true },
    // 将匹配 /users, /Users, 以及 /users/42 而非 /users/ 或 /users/42/
    { path: '/users/:id?' },
  ]
  strict: true, // applies to all routes
})
  • strict 末尾的斜杠
  • sensitive 大小写

你可能感兴趣的:(Vue基础知识,vue.js,前端,javascript)