Vue Router 路由匹配語法示例詳解
一、核心概念重述
在 Vue Router 中,路由的路徑(path)不僅支持靜態(tài)字符串(如 /about),還支持動態(tài)參數(shù)、正則約束、可重復(fù)段、可選參數(shù)等高級匹配語法。這些特性使得開發(fā)者可以靈活地定義 URL 結(jié)構(gòu),并精確控制路由匹配行為。
二、詳解各匹配語法
1.動態(tài)參數(shù)與自定義正則表達(dá)式
示例:
const routes = [
{ path: '/:orderId(\\d+)' }, // 只匹配數(shù)字
{ path: '/:productName' } // 匹配任意非空字符
]行為說明:
:orderId(\\d+):表示該參數(shù)必須是一個(gè)或多個(gè)數(shù)字:productName:默認(rèn)使用([^/]+)正則,匹配任意非斜杠字符- 訪問
/25→ 匹配orderId - 訪問
/books→ 匹配productName
? 無需按順序書寫路由規(guī)則,Vue Router 會根據(jù)正則精確性自動判斷優(yōu)先級!
注意事項(xiàng):
- 在 JavaScript 字符串中需雙寫反斜杠
\d→\\d,確保傳入的是\d給正則引擎
2.可重復(fù)參數(shù)(和 +)*
| 修飾符 | 含義 | 是否允許為空 | 示例匹配 |
|---|---|---|---|
+ | 1 個(gè)或多個(gè) | ? 不允許 | /a, /a/b, /a/b/c |
* | 0 個(gè)或多個(gè)(可選) | ? 允許 | /, /a, /a/b |
示例代碼:
{ path: '/:chapters+' } // 至少一個(gè)章節(jié)
{ path: '/:chapters*' } // 可以沒有章節(jié)(即匹配根路徑)參數(shù)輸出:
訪問 /vue/router/guide 時(shí):
this.$route.params.chapters // ['vue', 'router', 'guide']
?? 使用命名路由跳轉(zhuǎn)時(shí),必須傳遞數(shù)組形式的參數(shù)!
router.push({ name: 'chapters', params: { chapters: ['a', 'b'] } })
結(jié)合正則使用:
{ path: '/:chapters(\\d+)*' } // 匹配全為數(shù)字的路徑,如 /1/2/3 或 /
3.可選參數(shù)(?)
示例:
{ path: '/users/:id?' } // 匹配 /users 和 /users/42
{ path: '/:category(book|photo)?' } // category 可為 book/photo 或不存在
特點(diǎn):
?表示前面的內(nèi)容出現(xiàn) 0 次或 1 次- 不能重復(fù)(區(qū)別于
*和+) - 常用于構(gòu)建扁平層級結(jié)構(gòu)(如詳情頁)
4.敏感與嚴(yán)格選項(xiàng)(sensitive & strict)
| 選項(xiàng) | 默認(rèn)值 | 作用 |
|---|---|---|
sensitive | false | 是否區(qū)分大小寫 |
strict | false | 是否要求尾部斜杠一致 |
示例配置:
const router = createRouter({
routes: [
{ path: '/users/:id', sensitive: true }, // 區(qū)分大小寫
{ path: '/users/:id?' }
],
strict: true // 全局啟用嚴(yán)格模式
})匹配結(jié)果對比:
| 路徑 | sensitive: true | strict: true |
|---|---|---|
/Users/123 | ? 不匹配 | ? 影響全局設(shè)置 |
/users/123/ | ? 匹配(若無 strict) | ? 不匹配(有 strict) |
?? 推薦:開發(fā)階段開啟 strict: true 避免歧義;生產(chǎn)環(huán)境視需求關(guān)閉以提高容錯(cuò)。
三、綜合應(yīng)用示例圖解
?? 場景:電商網(wǎng)站路由設(shè)計(jì)
const routes = [
// 主頁
{ path: '/', name: 'home' },
// 商品分類(可選) + 商品 ID(必須為數(shù)字)
{ path: '/category/:cat?/:id(\\d+)', name: 'product' },
// 用戶訂單路徑(僅數(shù)字,至少一層)
{ path: '/order/:steps(\\d+)+', name: 'order-flow' },
// 文檔章節(jié)瀏覽(多層嵌套)
{ path: '/docs/:chapters*', name: 'docs' },
// 用戶中心(區(qū)分大小寫)
{ path: '/profile/:uid', sensitive: true }
]?? 匹配測試表:
| URL | 匹配路由 | 參數(shù)提取結(jié)果 |
|---|---|---|
/ | home | —— |
/category/book/123 | product | { cat: 'book', id: '123' } |
/category/456 | product | { id: '456' }(cat 為空) |
/order/1/2/3 | order-flow | { steps: ['1','2','3'] } |
/docs/vue/router/install | docs | { chapters: ['vue','router','install'] } |
/profile/POSVA | profile | { uid: 'POSVA' } |
/profile/posva ≠ /Profile/posva | ?(因 sensitive) | 大小寫不同導(dǎo)致不匹配 |
四、可視化圖表輔助學(xué)習(xí)
圖1:Vue Router 參數(shù)修飾符對比圖

圖2:正則結(jié)合修飾符語法結(jié)構(gòu)

五、調(diào)試建議與工具推薦
使用Path Ranking Tool
- 輸入你的路由列表
- 查看其生成的正則表達(dá)式和匹配優(yōu)先級
- 支持分享 URL,便于協(xié)作排查問題
?? 當(dāng)遇到“預(yù)期未匹配”時(shí),先檢查:
- 是否遺漏了雙反斜杠
\\ - 是否存在更高優(yōu)先級的模糊路由干擾
- 是否啟用了
strict/sensitive
六、知識點(diǎn)總結(jié)
下列知識點(diǎn)適用于上述所有內(nèi)容的理解與實(shí)踐。
知識點(diǎn) 1:動態(tài)參數(shù)與正則約束
通過:param(regex)限制參數(shù)格式,提升路由唯一性和安全性,避免沖突匹配。
知識點(diǎn) 2:參數(shù)重復(fù)與可選機(jī)制
使用+、*、?控制參數(shù)數(shù)量,分別實(shí)現(xiàn)必選重復(fù)、可選重復(fù)、單個(gè)可選功能。
知識點(diǎn) 3:路由匹配優(yōu)先級與配置項(xiàng)
sensitive控制大小寫敏感,strict控制尾斜杠一致性,影響最終URL精確匹配行為。
七、總結(jié)
Vue Router 的路徑匹配系統(tǒng)基于強(qiáng)大的路徑到正則轉(zhuǎn)換機(jī)制,允許我們通過簡潔語法實(shí)現(xiàn)復(fù)雜 URL 設(shè)計(jì)。合理運(yùn)用以下技巧可大幅提升項(xiàng)目可維護(hù)性:
? 利用自定義正則區(qū)分語義相同的動態(tài)路徑
? 使用*和+處理多層級結(jié)構(gòu)(如文檔、導(dǎo)航流)
? 合理使用?簡化可選層級
? 開發(fā)期啟用strict: true減少歧義
? 借助工具調(diào)試路徑排名,快速定位問題
掌握這些語法,你就能像編寫正則一樣精準(zhǔn)掌控應(yīng)用的導(dǎo)航邏輯!
到此這篇關(guān)于Vue Router 路由匹配語法詳解的文章就介紹到這了,更多相關(guān)vue router路由匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中transition動畫使用(移動端頁面切換左右滑動效果)
這篇文章主要介紹了vue中transition動畫使用(移動端頁面切換左右滑動效果),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
vue結(jié)合axios與后端進(jìn)行ajax交互的方法
本篇文章主要介紹了vue結(jié)合axios與后端進(jìn)行ajax交互的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
vue?el-input設(shè)置必填提示功能(單個(gè)與多個(gè))
有的功能需要設(shè)置必填項(xiàng),當(dāng)然也需要判斷是不是添上了,下面這篇文章主要給大家介紹了關(guān)于vue?el-input設(shè)置必填提示功能(單個(gè)與多個(gè))的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
vue中根據(jù)時(shí)間戳判斷對應(yīng)的時(shí)間(今天 昨天 前天)
這篇文章主要介紹了vue中 根據(jù)時(shí)間戳 判斷對應(yīng)的時(shí)間(今天 昨天 前天),需要的朋友可以參考下2019-12-12
vue-element-admin項(xiàng)目導(dǎo)入和導(dǎo)出的實(shí)現(xiàn)
組件是Vue.js最強(qiáng)大的功能,這篇文章主要介紹了vue-element-admin項(xiàng)目導(dǎo)入和導(dǎo)出的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
vue3+Echarts實(shí)現(xiàn)立體柱狀圖的示例代碼
本文介紹了使用Echarts實(shí)現(xiàn)立體柱狀圖的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
Vue關(guān)鍵字搜索功能實(shí)戰(zhàn)小案例
在vue項(xiàng)目中,搜索功能是我們經(jīng)常需要使用的一個(gè)場景,下面這篇文章主要給大家介紹了關(guān)于Vue關(guān)鍵字搜索功能的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Vue 自定義標(biāo)簽的src屬性不能使用相對路徑的解決
這篇文章主要介紹了Vue 自定義標(biāo)簽的src屬性不能使用相對路徑的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

