Vue Router 核心指南:構建高效單頁應用的導航藝術

Vue Router 是 Vue.js 官方路由管理器,為單頁應用(SPA)提供了無縫的頁面切換體驗。本文將深入解析其核心功能與最佳實踐。

一、基礎配置

1. 安裝與初始化

npm install vue-router
// router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/views/Home.vue'Vue.use(Router)const router = new Router({mode: 'history', // 可選 hash/historyroutes: [{path: '/',name: 'Home',component: Home}]
})

二、核心功能

1. 動態路由匹配

{path: '/user/:id',component: User,props: true // 將參數作為props傳遞
}

2. 嵌套路由

{path: '/dashboard',component: Dashboard,children: [{ path: 'profile', component: Profile }]
}

3. 編程式導航

// 基本跳轉
this.$router.push('/home')// 帶參數跳轉
this.$router.push({ name: 'User', params: { id: 123 } })// 替換當前路由
this.$router.replace('/login')

三、高級特性

1. 路由守衛

// 全局前置守衛
router.beforeEach((to, from, next) => {if (to.meta.requiresAuth && !isAuthenticated) {next('/login')} else {next()}
})// 組件內守衛
export default {beforeRouteEnter(to, from, next) {// 不能訪問thisnext(vm => {// 通過vm訪問組件實例})}
}

2. 路由懶加載

{path: '/about',component: () => import('@/views/About.vue')
}

3. 滾動行為控制

const router = new Router({scrollBehavior(to, from, savedPosition) {if (savedPosition) {return savedPosition} else {return { x: 0, y: 0 }}}
})

四、最佳實踐

  1. 路由分層:按功能模塊組織路由

  2. 權限控制:結合路由元信息(meta)實現

  3. 過渡動畫:使用<transition>包裝<router-view>

  4. 404處理:配置通配符路由

{path: '*',component: NotFound
}

? ? ? ?

五、常見問題解決方案

  1. 路由重復

const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {return originalPush.call(this, location).catch(err => err)
}

提示:對于大型項目,建議將路由配置拆分為多個模塊,并使用 webpack 的代碼分割功能優化性能優化應用加載性能提供流暢的用戶體驗

希望這篇博客對你有所幫助,如果有任何問題和建議歡迎留言討論?

  1. 動態添加路由

    router.addRoutes([{ path: '/new', component: NewComponent }
    ])

    掌握 Vue Router 的這些核心功能,你將能夠:

  2. 構建復雜的頁面導航結構

  3. 實現精細的訪問控制

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

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

相關文章

基礎學習:(9)vit -- vision transformer 和其變體調研

文章目錄 前言1 vit 熱點統計1.1 目標分類 / 基礎與改進1.2 輕量化 ViT / 移動部署優化(移動端)1.3 密集預測&#xff08;語義分割 / 深度估計等&#xff09;1.4 目標/詞匯 檢測1.5 掩碼改進1.6 多模態/ 通用大模型1.7 分布式訓練 / 效果提升1.8 任務特化應用&#xff08;圖表 …

同樣開源的自動化工作流工具n8n和Dify對比

n8n和Dify作為兩大主流工具&#xff0c;分別專注于通用自動化和AI應用開發領域&#xff0c;選擇哪個更“好用”需結合具體需求、團隊能力及業務場景綜合判斷。以下是核心維度的對比分析&#xff1a; 一、核心定位與適用場景 維度n8nDify核心定位開源全場景自動化工具&#xff…

網頁設計規范:從布局到交互的全方位指南

網頁設計規范看似繁雜&#xff0c;但其實都是為了給用戶提供更好的體驗。只有遵循這些規范&#xff0c;才能設計出既美觀又實用的網頁&#xff0c;讓用戶在瀏覽網頁時感到舒適、愉悅。 一、用戶體驗至上 用戶體驗&#xff08;UX&#xff09;是網頁設計的核心原則之一。設計師…

圖神經網絡(GNN)基本概念與核心原理

圖神經網絡(GNN)基本概念與核心原理 圖神經網絡(GNN)是一類專門處理圖結構數據的神經網絡模型 (GTAT: empowering graph neural networks with cross attention | Scientific Reports)。圖結構數據由節點(表示實體)和邊(表示實體間關系)構成,每個節點和邊都可以帶有特…

【雙指針】專題:LeetCode 18題解——四數之和

四數之和 一、題目鏈接二、題目三、題目解析四、算法原理解法一&#xff1a;排序 暴力枚舉 利用 set 去重解法二&#xff1a;排序 雙指針 五、編寫代碼六、時間復雜度和空間復雜度 一、題目鏈接 四數之和 二、題目 三、題目解析 題目要求基本與三數之和一樣。 四、算法原…

3.0/Q2,Charls最新文章解讀

diseases and depressive symptoms comorbidity on the risk of cognitive impairment in middle-aged and older adults people based on the CHARLS database DOI&#xff1a;10.3389/fpubh.2025.1558430 中文標題&#xff1a;基于CHARLS數據庫的慢性病與抑郁癥狀共病對中老年…

學習筆記—雙指針算法—移動零

雙指針算法 移動零 283. 移動零 - 力扣&#xff08;LeetCode&#xff09; 題目描述&#xff1a; 給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 請注意 &#xff0c;必須在不復制數組的情況下原地對數組進…

組件的基本知識

組件 組件的基本知識 組件概念組成步驟好處全局注冊生命周期scoped原理 父子通信步驟子傳父 概念 就是將要復用的標簽&#xff0c;抽離放在一個獨立的vue文件中&#xff0c;以供主vue文件使用 組成 三部分構成 template&#xff1a;HTML 結構 script: JS 邏輯 style: CSS 樣…

將視頻生成視頻二維碼步驟

如何將視頻鏈接生成二維碼 生成與視頻關聯的二維碼通常涉及以下幾個方面&#xff1a;選擇合適的庫或工具、準備視頻鏈接以及將其轉換為二維碼圖像。以下是詳細的說明&#xff1a; 使用JavaScript/Vue框架生成二維碼 在前端開發中&#xff0c;可以使用 qrcode 或者 vue-qrcod…

關系型數據庫PostgreSQL for Mac 保姆級使用教程

第一部分&#xff1a;安裝PostgreSQL 方法一&#xff1a;使用Postgres.app&#xff08;最簡單&#xff09; 訪問 Postgres.app官網 下載最新版本&#xff0c;將 Postgres.app 移動到 “Applications” 文件夾。 雙擊Postgres.app打開應用&#xff0c;點擊"Initialize&q…

Redis超詳細入門教程(基礎篇)

一&#xff1a;Redis 簡介 &#xff08;1&#xff09;Mysql: 將數據通過數據文件存在磁盤上 通過二維表存儲數據 &#xff08;2&#xff09;Redis 定義&#xff1a; 優點&#xff1a; 熱點數據&#xff1a;短時間內有大量用戶訪問 二&#xff1a;Redis下載與安裝 Windows系統安…

【JS-Leetcode】2621睡眠函數|2629復合函數|2665計數器||

文章目錄 2621睡眠函數2629復合函數2665計數器|| 這三個題目涉及setTimeout、promise、數組reduce方法&#xff0c;閉包。 2621睡眠函數 請你編寫一個異步函數&#xff0c;它接收一個正整數參數 millis &#xff0c;并休眠 millis 毫秒。要求此函數可以解析任何值。 原理&am…

重塑編程體驗邊界:明基RD280U顯示器深度體驗

重塑編程體驗邊界&#xff1a;明基RD280U顯示器深度體驗 寫在前面 本文將以明基RD280U為核心&#xff0c;通過技術解析、實戰體驗與創新案例&#xff0c;揭示專業顯示器如何重構開發者的數字工作臺。 前言&#xff1a;當像素成為生產力的催化劑 在GitHub的年度開發者調查中&…

如何通過挖掘需求、SEO優化及流量變現成功出海?探索互聯網產品的盈利之道

挖掘需求&#xff0c;優化流量&#xff0c;實現變現&#xff1a;互聯網出海產品的成功之路 在當今全球化的數字時代&#xff0c;越來越多的企業和個人選擇將業務擴展到國際市場。這一趨勢不僅為企業帶來了新的增長機會&#xff0c;也為個人提供了通過互聯網產品實現盈利的途徑…

cuda學習2:cuda編程基本概念

CUDA基本概念 主機&#xff08;host&#xff09; 通常將起控制作用的CPU稱為主機&#xff08;host&#xff09; 設備&#xff08;device&#xff09; 將起加速作用的 GPU 稱為設備&#xff08;device&#xff09; 流處理器&#xff08;streaming processor&#xff09; 物…

AVL樹的介紹與學習

目錄 1.前言 2.AVL樹 3.AVL樹的插入 平衡因子的更新 更新停止的條件 旋轉 1.前言 在學習了二叉搜索樹&#xff0c;set和map之后&#xff0c;我們接下來趁熱打鐵&#xff0c;繼續學習AVL樹。 2.AVL樹 1.AVL樹具有二叉搜索樹的性質&#xff0c;但是它的左右子樹的高度差不…

數字人接大模型第二步:實時語音同步

接上例第一步,還是dh_live項目,增加了一個完整的實時對話樣例,包含vad-asr-llm-tts-數字人全流程,以彌補之前的只有固定的問答的不足。 VAD(Voice Activity Detection,語音活動檢測)VAD用于檢測用戶是否正在說話,從而觸發后續的語音處理流程。 ASR(Automatic Speech R…

01_Long比較值 類型相同值不同

問題描述&#xff1a; 看如下代碼&#xff1a; Long a 128L; Long b 128L;System.out.println(a b);運行結果如下&#xff1a; 明明 a 和 b 的值一樣&#xff0c;但是結果卻為 False&#xff0c;為什么同樣的類型&#xff0c;同樣的值&#xff0c;卻不相等&#xff0c;這是…

EKS環境下服務重啟50X錯誤

EKS中&#xff0c;當使用AWS Load Balancer Controller時&#xff0c;ALB有兩種模式&#xff0c;Internet-facing和Internet&#xff0c;當使用Internet模式時&#xff0c;ALB注冊的是NodeIP&#xff1b;使用Internet-facing模式時&#xff0c;ALB注冊的則是Pod IP。從模式上來…

Android項目升級插件到kotlin 2.1.0后混淆網絡請求異常

背景 項目kt插件1.9.24升級到2.1.0后打包編譯release網絡請求失敗了。 retrofit版本2.9.0 錯誤詳情 java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedTypeat retrofit2.m.a(Unknown Source:2477)at retrofit2.K.invoke(U…