《Vue Router實戰教程》4.路由的匹配語法

歡迎觀看《Vue Router 實戰(第4版)》視頻課程

    1. 路由的匹配語法

大多數應用都會使用 /about 這樣的靜態路由和 /users/:userId 這樣的動態路由,就像我們剛才在動態路由匹配中看到的那樣,但是 Vue Router 可以提供更多的方式!

TIP

為了簡單起見,所有的路由都省略了 component 屬性,只關注 path 值。

      1. 在參數中自定義正則

當定義像 :userId 這樣的參數時,我們內部使用以下的正則 ([^/]+) (至少一個不是斜杠 / 的字符)來從 URL 中提取參數。這很好用,除非你需要根據參數的內容來區分兩個路由。想象一下,兩個路由 /:orderId 和 /:productName,兩者會匹配完全相同的 URL,所以我們需要一種方法來區分它們。最簡單的方法就是在路徑中添加一個靜態部分來區分它們:

const routes = [

??// 匹配 /o/3549

??{ path: '/o/:orderId' },

??// 匹配 /p/books

??{ path: '/p/:productName' },

]

但在某些情況下,我們并不想添加靜態的 /o /p 部分。由于,orderId 總是一個數字,而 productName 可以是任何東西,所以我們可以在括號中為參數指定一個自定義的正則:

const routes = [

??// /:orderId -> 僅匹配數字

??{ path: '/:orderId(\\d+)' },

??// /:productName -> 匹配其他任何內容

??{ path: '/:productName' },

]

現在,轉到 /25 將匹配 /:orderId,其他情況將會匹配 /:productName。routes 數組的順序并不重要!

TIP

確保轉義反斜杠( \ ),就像我們對 \d (變成\\d)所做的那樣,在 JavaScript 中實際傳遞字符串中的反斜杠字符。

      1. 可重復的參數

如果你需要匹配具有多個部分的路由,如 /first/second/third,你應該用 *(0 個或多個)和 +(1 個或多個)將參數標記為可重復:

const routes = [

??// /:chapters -> ?匹配 /one, /one/two, /one/two/three, 等

??{ path: '/:chapters+' },

??// /:chapters -> 匹配 /, /one, /one/two, /one/two/three, 等

??{ path: '/:chapters*' },

]

這將為你提供一個參數數組,而不是一個字符串,并且在使用命名路由時也需要你傳遞一個數組:

// 給定 { 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` 為空

這些也可以通過在右括號后添加它們與自定義正則結合使用:

const routes = [

??// 僅匹配數字

??// 匹配 /1, /1/2, 等

??{ path: '/:chapters(\\d+)+' },

??// 匹配 /, /1, /1/2, 等

??{ path: '/:chapters(\\d+)*' },

]

      1. Sensitive 與 strict 路由配置

默認情況下,所有路由是不區分大小寫的,并且能匹配帶有或不帶有尾部斜線的路由。例如,路由 /users 將匹配 /users、/users/、甚至 /Users/。這種行為可以通過 strict 和 sensitive 選項來修改,它們既可以應用在整個全局路由上,又可以應用于當前路由上:

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

})

      1. 可選參數

你也可以通過使用 ? 修飾符(0 個或 1 個)將一個參數標記為可選:

const routes = [

??// 匹配 /users 和 /users/posva

??{ path: '/users/:userId?' },

??// 匹配 /users 和 /users/42

??{ path: '/users/:userId(\\d+)?' },

]

請注意,* 在技術上也標志著一個參數是可選的,但 ? 參數不能重復。

      1. 調試

如果你需要探究你的路由是如何轉化為正則的,以了解為什么一個路由沒有被匹配,或者,報告一個 bug,你可以使用路徑排名工具。它支持通過 URL 分享你的路由。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900959.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900959.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900959.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Debezium報錯處理系列之第128篇:增量快照報錯java.lang.OutOfMemoryError: Java heap space

Debezium報錯處理系列之第128篇:增量快照報錯java.lang.OutOfMemoryError: Java heap space 一、完整報錯二、錯誤原因三、解決方法Debezium從入門到精通系列之:研究Debezium技術遇到的各種錯誤解決方法匯總: Debezium從入門到精通系列之:百篇系列文章匯總之研究Debezium技…

通過MCP+數據庫實現AI檢索和分析

通過 MCP(Multi-Agent Collaboration Platform,多智能體協作平臺) 數據庫,實現一個AI檢索和分析系統。 一、系統目標 實現通過 AI 多智能體對結構化(數據庫)和非結構化(文檔、文本&#xff09…

【教學類-102-08】剪紙圖案全套代碼08——Python點狀虛線優化版本02(有空隙)+制作1圖2圖6圖24圖

背景需求 代碼實現了點狀虛線的全套流程,但是圖片中主體圖案和虛線與左右兩邊粘連。 【教學類-102-07】剪紙圖案全套代碼07——Python點狀虛線優化版本01(無空隙)+制作1圖2圖6圖24圖-CSDN博客文章瀏覽閱讀665次,點贊11次,收藏11次。【教學類-102-07】剪紙圖案全套代碼07…

循環神經網絡 - 長短期記憶網絡

在之前的博文中,我們介紹了循環神經網絡的長程依賴問題及改進方案,可以參考:循環神經網絡 - 長程依賴問題及改進方案-CSDN博客 但是改進方案只是可以緩解梯度消失,并不能徹底解決梯度爆炸問題和記憶容量(Memory Capacity)問題。 …

LLM應用開發(七)--記憶

1.LangChain記憶模塊 底層原理:在最新一次問題時,帶上前面的人機對話歷史內容 1.1.具體方式 緩沖記憶 緩沖窗口記憶(限定存儲會話信息次數) 令牌緩沖記憶 摘要總結記憶 摘要緩沖混合記憶 向量存儲庫記憶

Unity VideoPlayer 播放無聲音

增加一個videoPlayer下掛&#xff0c;audiorSource腳本 this.videoPlayer.EnableAudioTrack(0, true); this.videoPlayer.audioOutputMode VideoAudioOutputMode.AudioSource; this.videoPlayer.SetTargetAudioSource(0, this.videoPlayer.GetComponent<AudioSource>()…

AGI|AutoGen入門食用手冊,搭建你的智能體流水線

目錄 1. AutoGen簡介 主要特點 2.快速安裝 3. 相關概念 Agent Roles and Conversations 4.多代理對話 4.1 Agents 例子: 兩個對話代理 4.2 支持多樣化的對話模式 1. AutoGen簡介 AutoGen 是一個開源編程框架&#xff0c;用于構建AI代理并促進多個代理之間的合作以解…

基于ImGui+FFmpeg實現播放器

基于ImGuiFFmpeg實現播放器 演示&#xff1a; ImGui播放器 繼續研究FFmpeg&#xff0c;之前做了一個SDL的播放器&#xff0c;發現SDL的可視化UI界面的功能稍微差了點&#xff0c;所以今天我們換了一個新的工具&#xff0c;也就是ImGui。 ImGui官方文檔&#xff1a;https://g…

ES6變量聲明:let、var、const全面解析

一、引言 ECMAScript 6&#xff08;簡稱 ES6&#xff09;的發布為 JavaScript 帶來了許多革命性的變化&#xff0c;其中變量聲明方式的更新尤為重要。let、var和const成為開發者日常編碼中頻繁使用的關鍵字。 本文將深入解析這三種聲明方式的核心特性、區別及最佳實踐&#xff…

Java基礎 - 反射(2)

文章目錄 示例5. 通過反射獲得類的private、 protected、 默認訪問修飾符的屬性值。6. 通過反射獲得類的private方法。7. 通過反射實現一個工具BeanUtils&#xff0c; 可以將一個對象屬性相同的值賦值給另一個對象 接上篇&#xff1a; 示例 5. 通過反射獲得類的private、 pro…

FCOS目標檢測

一、模型框架 FCOS采用的網絡架構和RetinaNet一樣&#xff0c;都是采用FPN架構&#xff0c;如圖2所示&#xff0c;每個特征圖后是檢測器&#xff0c;檢測器包含3個分支&#xff1a;classification&#xff0c;regression和center-ness。 對于特征圖Fi∈RHWC&#xff0c;其相對…

Java基礎 - 泛型(常見用法)

文章目錄 泛型類泛型方法泛型類派生子類示例 1&#xff1a;子類固定父類泛型類型&#xff08;StringBox 繼承自 Box<String>&#xff09;示例 2&#xff1a;子類保留父類泛型類型&#xff08;AdvancedBox<T> 繼承自 Box<T>)示例 3&#xff1a;添加子類自己的…

YOLO學習筆記 | YOLOv8環境搭建全流程指南(2025.4)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== YOLOv8環境搭建 一、環境準備與工具配置1. Conda虛擬環境搭建2. CUDA與…

【 Beautiful Soup (bs4) 詳解】

引言 Beautiful Soup 是 Python 最流行的 HTML/XML 解析庫&#xff0c;能夠從復雜的網頁文檔中高效提取數據。以下是其核心知識點及示例代碼。 一、庫簡介 1. 核心模塊 BeautifulSoup&#xff1a;主類&#xff0c;用于構建文檔樹結構Tag&#xff1a;表示 HTML/XML 標簽的對象…

傅利葉發布首款開源人形機器人N1:開發者可實現完整復刻

2025年4月11日&#xff0c;上海——通用機器人公司傅利葉正式發布首款開源人形機器人 Fourier N1&#xff0c;并同步開放涵蓋物料清單、設計圖紙、裝配指南、基礎操作軟件在內的完整本體資源包。作為傅利葉 “Nexus 開源生態矩陣” 的首個落地項目&#xff08;“N1” 即 “Nexu…

視覺目標檢測大模型GAIA

中國科學院自動化研究所智能感知與計算研究中心攜手華為等領軍企業&#xff0c;共同推出面向產業應用的視覺目標檢測全流程解決方案——GAIA智能檢測平臺。該研究成果已獲CVPR 2021會議收錄&#xff08;論文鏈接&#xff1a; 論文地址&#xff1a;https://arxiv.org/pdf/2106.…

前端時間同步利器:React + useEffect 實現高性能動態時鐘

前言 在你奮筆疾敲代碼的瞬間&#xff0c;是不是突然一低頭&#xff0c;發現時間像偷偷跑路的變量&#xff0c;一眨眼就從上午飄到下午&#xff1f;飯沒吃、會沒開、工位也快被前端貓霸占了。仿佛你寫的不是代碼&#xff0c;而是“時間穿梭機”。別慌&#xff0c;咱們今天就來…

前端動畫性能優化

前端動畫性能優化全攻略&#xff1a;告別卡頓與高CPU占用 一、動畫性能問題現狀分析 1.1 性能問題現象 動畫幀率低于60FPS時出現明顯卡頓滾動/縮放操作時響應延遲CPU占用率長期超過70%移動端設備發熱嚴重 1.2 核心問題根源 瀏覽器渲染流程中的性能瓶頸主要出現在&#xff1…

springboot中如何處理跨域

什么是跨域 跨域&#xff08;Cross-Origin&#xff09;是瀏覽器出于安全考慮&#xff0c;對不同源的資源訪問施加的限制機制。其核心原因是同源策略&#xff08;Same-Origin Policy&#xff09;&#xff0c;即瀏覽器僅允許協議&#xff08;Protocol&#xff09;、域名&#xf…

js實現生肖宜忌展示

實現效果圖如下 實現邏輯&#xff1a; 1.錄入屬相列表&#xff08;列表順序不可調整&#xff09;&#xff1b; 2.錄入各屬相相宜、相忌屬相&#xff1b; 3.輸入年份后&#xff0c;根據屬相列表獲取到正確的屬相&#xff1b; 4.根據獲取的屬相去展示宜、忌屬相&#xff1b; 5.打…