讀懂 Vue3 路由:從入門到實戰

在構建現代化單頁應用(SPA)時,Vue3 憑借其簡潔高效的特性成為眾多開發者的首選。

而 Vue3 路由(Vue Router)則是 Vue3 生態中不可或缺的一部分,它就像是單頁應用的 “導航地圖”,幫助用戶在不同的頁面(組件)之間自由穿梭,同時保證頁面的流暢切換,無需刷新整個網頁。

一、Vue3 路由的基礎概念

1. 什么是路由

路由可以簡單理解為 “網址” 與 “頁面內容(組件)” 之間的對應關系。

在傳統的多頁應用中,每一個頁面都是一個獨立的 HTML 文件,通過超鏈接跳轉時,瀏覽器會重新加載新的頁面。而在單頁應用里,整個應用只有一個 HTML 文件,通過路由來控制不同組件的顯示與隱藏,從而模擬出頁面跳轉的效果。

例如,當用戶訪問?https://example.com/home?時,顯示首頁組件;訪問?https://example.com/about?時,顯示關于我們的組件,這就是路由在起作用。

2. Vue Router 的作用

Vue Router 是 Vue.js 官方的路由管理器,專門為 Vue 應用開發設計。它不僅實現了 URL 與組件的映射,還提供了諸如路由嵌套、路由守衛、動態路由等強大功能,讓開發者能夠輕松構建復雜的單頁應用架構,提升用戶體驗。

二、Vue3 路由的安裝與基本使用

1. 安裝 Vue Router

在使用 Vue3 路由之前,需要先安裝它。如果你的項目是通過 npm 管理依賴,可以在項目根目錄下執行以下命令:

npm install vue-router@4

如果你使用的是 yarn,則執行:

yarn add vue-router@4

這里安裝的是 Vue Router 4 版本,它完美適配 Vue3。

2. 創建路由實例

安裝完成后,在項目中創建一個路由文件,例如?router.js。在該文件中,引入必要的模塊并創建路由實例,代碼如下:

import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';const routes = [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}
];const router = createRouter({history: createWebHistory(),routes
});export default router;

在這段代碼中:

  • 首先從?vue-router?中引入?createRouter?和?createWebHistory?方法。createRouter?用于創建路由實例,createWebHistory?用于創建基于 HTML5 History API 的路由模式,這種模式下的 URL 更加簡潔美觀,例如?https://example.com/about,沒有多余的哈希符號。
  • 接著引入了兩個組件?Home?和?About,它們將作為不同路由對應的顯示內容。
  • 然后定義?routes?數組,其中每個對象表示一條路由規則,包含?path(路由路徑)、name(路由名稱,方便在代碼中引用)和?component(對應的組件)。
  • 最后通過?createRouter?方法創建路由實例,并將配置好的?history?和?routes?傳入,再將路由實例導出,以便在 Vue 應用中使用。

3. 在 Vue 應用中使用路由

在?main.js?文件中,引入創建好的路由實例,并將其掛載到 Vue 應用上:

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';const app = createApp(App);
app.use(router);
app.mount('#app');

這樣,路由就已經集成到 Vue 應用中了。在?App.vue?文件中,可以使用?<router-view>?組件來顯示當前路由對應的組件內容,例如:

<template><div id="app"><router-view></router-view></div>
</template>

同時,還可以使用?<router-link>?組件來創建導航鏈接,代替傳統的?<a>?標簽,例如:

<template><div id="app"><router-link to="/">Home</router-link> |<router-link to="/about">About</router-link><router-view></router-view></div>
</template>

此時,點擊這些鏈接,頁面會在不刷新的情況下顯示對應的組件內容。

三、Vue3 路由的進階功能

1. 動態路由

在實際應用中,經常會遇到需要傳遞參數的路由,例如顯示用戶詳情頁,每個用戶都有一個唯一的 ID。這時就可以使用動態路由,在路由路徑中使用參數,示例如下:

const routes = [{path: '/user/:id',name: 'User',component: User}
];

在上述代碼中,:id?就是一個動態參數。當用戶訪問?https://example.com/user/1?時,1?這個值會被傳遞到?User?組件中。在?User?組件中,可以通過?this.$route.params.id(在選項式 API 中)或?useRoute().params.id(在組合式 API 中)來獲取這個參數值。

2. 路由嵌套

有些頁面的結構比較復雜,包含多個子頁面,這時候就需要用到路由嵌套。例如,在一個博客應用中,文章詳情頁可能還包含評論區、相關文章推薦等子模塊,每個子模塊可以對應一個子路由。路由嵌套的配置方式如下:

const routes = [{path: '/article',name: 'Article',component: Article,children: [{path: ':id',name: 'ArticleDetail',component: ArticleDetail},{path: ':id/comments',name: 'ArticleComments',component: ArticleComments}]}
];

在上述代碼中,children?數組定義了?Article?組件的子路由。訪問?https://example.com/article/1?會顯示?ArticleDetail?組件,訪問?https://example.com/article/1/comments?會顯示?ArticleComments?組件。

在?Article.vue?組件中,同樣需要使用?<router-view>?來顯示子路由對應的內容。

3. 路由守衛

路由守衛用于在路由跳轉的不同階段執行一些自定義邏輯,例如驗證用戶登錄狀態、記錄頁面訪問日志等。常見的路由守衛有全局守衛、路由獨享守衛和組件內守衛。

  • 全局守衛:在?router.js?文件中可以定義全局前置守衛?router.beforeEach?和全局后置鉤子?router.afterEach。例如,使用全局前置守衛來驗證用戶是否登錄:
router.beforeEach((to, from, next) => {const isLoggedIn = localStorage.getItem('isLoggedIn');if (to.meta.requiresAuth &&!isLoggedIn) {next('/login');} else {next();}
});

上述代碼中,to?表示即將要進入的目標路由對象,from?表示當前導航正要離開的路由,next?是一個函數,調用?next()?表示放行,繼續跳轉;調用?next('/login')?表示將導航重定向到?/login?路由。

  • 路由獨享守衛:在路由配置中,可以為每條路由單獨設置守衛,例如:
const routes = [{path: '/admin',name: 'Admin',component: Admin,beforeEnter: (to, from, next) => {// 執行自定義邏輯next();}}
];

  • 組件內守衛:在組件內部定義?beforeRouteEnterbeforeRouteUpdate?和?beforeRouteLeave?方法,用于在組件的路由相關操作時執行邏輯。

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

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

相關文章

Mac M1安裝 Docker Desktop 后啟動沒反應

Mac M1安裝 Docker Desktop 后啟動沒反應 如果在 Mac M1 上安裝 Docker&#xff0c;那最好的選擇是安裝 Docker Desktop但是今天重新安裝 Docker Desktop 后&#xff0c;發現點擊圖標啟動怎么也沒反應&#xff0c;經過排查后發現換個版本安裝就好了&#xff0c;可能是最新的版…

快速上手c語言

快速上手c語言 快速上手c語言關于學c語言的一些信息雜談第一個C語言程序通過命令行運行c程序Dev-c5.11Visual Studio系列產品 數據類型變量、常量定義變量的方法變量的命名變量的分類變量的使用變量的作用域和生命周期常量 操作符簡單介紹語句選擇語句循環語句 數組數組定義數組…

Nginx核心功能及正則表達

目錄 一&#xff1a;正向代理 1&#xff1a;編譯安裝nginx &#xff08;1&#xff09;安裝支持軟件 &#xff08;2&#xff09;創建運行用戶、組和日志目錄 &#xff08;3&#xff09;編譯安裝nginx &#xff08;4&#xff09;添加nginx系統服務 2&#xff1a;配置正向代…

npm命令介紹(Node Package Manager)(Node包管理器)

文章目錄 npm命令全解析簡介基礎命令安裝npm&#xff08;npm -v檢插版本&#xff09;初始化項目&#xff08;npm init&#xff09;安裝依賴包&#xff08;npm install xxx、npm i xxx&#xff09;卸載依賴包&#xff08;npm uninstall xxx 或 npm uni xxx、npm remove xxx&…

【Linux】Linux基礎概念

一些比較重要的使用Linux的前情提要。 部分經驗來源于網絡&#xff0c;若有侵權請聯系我刪除&#xff0c;主要是做筆記的時候忘記寫來源了&#xff0c;做完筆記很久才寫博客。 專欄目錄&#xff1a;記錄自己的嵌入式學習之路-CSDN博客 目錄 1 Shell命令參數 2 系統變量…

阿里開源Qwen3:大語言模型的新突破

一、模型概覽&#xff1a;豐富的模型家族 Qwen3 系列包含了 2 款混合專家&#xff08;MoE&#xff09;模型與 6 款密集&#xff08;Dense&#xff09;模型&#xff0c;參數量覆蓋范圍極廣&#xff0c;從 0.6B 一直延伸至 235B 。其中&#xff0c;旗艦模型 Qwen3 - 235B - A22B…

數字智慧方案5856丨智慧環保綜合解決方案(50頁PPT)(文末有下載方式)

資料解讀&#xff1a;智慧環保綜合解決方案 詳細資料請看本解讀文章的最后內容。 隨著城市化進程的加速和環境問題的日益嚴峻&#xff0c;智慧環保成為提升城市環境管理水平的重要手段。本文將對智慧環保綜合解決方案進行詳細解讀&#xff0c;探討其在實際應用中的需求、解決…

基于ssm的網盤管理系統(全套)

一、系統架構 前端&#xff1a;vue | element-ui 后端&#xff1a;spring | springmvc | mybatis 環境&#xff1a;jdk1.8 | mysql | maven | tomcat | nodejs 二、代碼及數據庫 三、功能介紹 01. 注冊 02. 登錄 03. 管理員-首頁 04. 管理員-個人中心 …

PostgreSQL 的 VACUUM 與 VACUUM FULL 詳解

PostgreSQL 的 VACUUM 與 VACUUM FULL 詳解 一、基本概念對比 特性VACUUMVACUUM FULL定義常規維護操作&#xff0c;清理死元組激進重組操作&#xff0c;完全重寫表數據鎖級別不阻塞讀寫(共享鎖)排他鎖(阻塞所有操作)空間回收只標記空間為可用&#xff0c;不返還OS空間返還操作…

復刻低成本機械臂 SO-ARM100 舵機配置篇(WSL)

視頻講解&#xff1a; 復刻低成本機械臂 SO-ARM100 舵機配置篇&#xff08;WSL&#xff09; 飛特舵機 組裝之前需要配置舵機的ID&#xff0c;如下的網址為舵機的資料&#xff0c;實際上用不到&#xff0c;但可以mark在這里 Software-深圳飛特模型有限公司 User Guide里面可以…

Tailwind CSS實戰技巧:從核心類到高效開發

使用 Kooboo平臺 訓練實戰技巧&#xff0c;無需配置安裝&#xff0c;直接引入CDN就可以在線練習了&#xff01;具體操作流程&#xff1a;進入Kooboo后&#xff0c;選擇創建空白站點 -> 站點開發 -> 控制面板 -> 頁面 ->新建普通頁面 -> 編寫代碼 一、核心布局類…

【LINUX操作系統】線程操作

了解了線程的基本原理之后&#xff0c;我們來學習線程在C語言官方庫中的寫法與用法。 1. 常見pthread接口及其背后邏輯 1.1 pthread_create 與線程有關的函數構成了?個完整的系列&#xff0c;絕?多數函數的名字都是以“pthread_”打頭的 ? 要使?這些函數庫&#xff0c;…

【AI面試準備】Azure DevOps沙箱實驗全流程詳解

介紹動手實驗&#xff1a;通過 Azure DevOps 沙箱環境實操&#xff0c;體驗從代碼提交到測試篩選的全流程。如何快速掌握&#xff0c;以及在實際工作中如何運用。 通過 Azure DevOps 沙箱環境進行動手實驗&#xff0c;是快速掌握 DevOps 全流程&#xff08;從代碼提交到測試篩選…

VulnHub-DC-2靶機

主機發現 sudo arp-scan -l 以sudo管理員權限掃描本地活動ip地址 Interface: eth0, type: EN10MB, MAC: 08:00:27:22:46:4f, IPv4: 192.168.252.230 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.252.6 4c:5f:70:74:3c:3b …

藏語英語中文機器翻譯入門實踐

&#x1f3af; 項目目標&#xff1a; 輸入藏文句子&#xff0c;自動翻譯成英文和中文&#xff08;或輸入中文&#xff0c;翻譯為英文和藏文&#xff09;。 &#x1f50d; 技術與原理簡介 機器翻譯&#xff08;Machine Translation, MT&#xff09;是人工智能中自然語言處理&a…

【阿里云大模型高級工程師ACP習題集】2.9 大模型應用生產實踐(上篇)

練習題 【單選題】在自然語言處理的法務咨詢場景中,以下哪種模型選擇最為合適? A. 通用大語言模型 B. 經過數學領域微調的模型 C. 面向法律領域訓練的模型 D. 視覺模型 【多選題】以下哪些屬于模型非功能性需求?( ) A. 模型對不同語言的支持能力 B. 模型的響應速度要求 C.…

WPF之ProgressBar控件詳解

文章目錄 1. ProgressBar控件簡介2. ProgressBar的基本屬性和用法2.1 基本屬性2.2 基本用法2.3 代碼中修改進度 3. 確定與不確定模式3.1 確定模式&#xff08;Determinate&#xff09;3.2 不確定模式&#xff08;Indeterminate&#xff09; 4. 在多線程環境中更新ProgressBar4.…

IntelliJ IDEA 保姆級安裝教程(附安裝包)

文章目錄 一、下載二、安裝三、啟動 一、下載 Ultimate 2021.1.1 - Windows x64 (exe) 二、安裝 三、啟動 首次安裝啟動 非首次安裝啟動

Performance API 性能上報

以下是關于 Performance API 性能上報的基本知識點總結: 一、性能監控核心指標體系 1. 關鍵性能指標(Web Vitals) 指標標準采集方式健康閾值LCP (最大內容繪制)測量加載性能PerformanceObserver≤2.5sFID (首次輸入延遲)測量交互響應PerformanceObserver≤100msCLS (累積布…

C語言-指針(一)

目錄 指針 內存 概念 指針變量 取地址操作符&#xff08;&&#xff09; 操作符“ * ” 指針變量的大小 注意 指針類型的意義 作用 void * 指針 const修飾指針變量 const放在*前 const放在*后 雙重const修飾 指針的運算 1.指針 - 整數 2.指針 - 指針 3.指…