Vue router配置與使用分析講解
說(shuō)明
- 本教程適用于vue3中的路由vue-router@4,的配置及使用
- 安裝及配置
- 路由的基本使用
- 動(dòng)態(tài)路由的添加
- 路由守衛(wèi)
- 找不到路由配置(path: ‘/:pathMatch(.)’,)
一、安裝及配置
安裝
npm install vue-router@4
配置
//自己創(chuàng)建的router文件中 import { createRouter, createWebHashHistory } from 'vue-router' //createWebHashHistory 在訪問(wèn)的時(shí)候帶有# //createWebHistory 在訪問(wèn)的時(shí)候不帶# const router = createRouter({ history: createWebHashHistory(), routes: [ //... ], }) export default router
//在main.js文件中 import router from 'router_path' const app = createApp(App) app.use(router) app.mount('#app')
二、在html中使用
用 Vue + Vue Router 創(chuàng)建單頁(yè)應(yīng)用非常簡(jiǎn)單:通過(guò) Vue.js,我們已經(jīng)用組件組成了我們的應(yīng)用。當(dāng)加入 Vue Router 時(shí),我們需要做的就是將我們的組件映射到路由上,讓 Vue Router 知道在哪里渲染它們。下面是一個(gè)基本的例子:
HTML
<script src="https://unpkg.com/vue@3"></script> <script src="https://unpkg.com/vue-router@4"></script> <div id="app"> <h1>Hello App!</h1> <p> <!--使用 router-link 組件進(jìn)行導(dǎo)航 --> <!--通過(guò)傳遞 `to` 來(lái)指定鏈接 --> <!--`<router-link>` 將呈現(xiàn)一個(gè)帶有正確 `href` 屬性的 `<a>` 標(biāo)簽--> <router-link to="/">Go to Home</router-link> <router-link to="/about">Go to About</router-link> </p> <!-- 路由出口 --> <!-- 路由匹配到的組件將渲染在這里 --> <router-view></router-view> </div>
router-link
請(qǐng)注意,我們沒(méi)有使用常規(guī)的 a 標(biāo)簽,而是使用一個(gè)自定義組件 router-link 來(lái)創(chuàng)建鏈接。這使得 Vue Router 可以在不重新加載頁(yè)面的情況下更改 URL,處理 URL 的生成以及編碼。我們將在后面看到如何從這些功能中獲益。
router-view
router-view 將顯示與 url 對(duì)應(yīng)的組件。你可以把它放在任何地方,以適應(yīng)你的布局。
三、路由的基本使用
路由基本元素有name、path、component、meta(字典)幾個(gè)要素
- name路由名
- path路由路徑
- component組件名(組件的路徑及組件名)
- meta路由元信息
- 例
import { createRouter, createWebHashHistory } from 'vue-router' import Login from '@/views/Login.vue' const router = createRouter({ history: createWebHashHistory(), routes: [ { path: '/', name: 'login', meta:{ title:'登錄', }, component: Login }, }) export default router
帶參數(shù)的路由匹配
很多時(shí)候,我們需要將給定匹配模式的路由映射到同一個(gè)組件。例如,我們可能有一個(gè) User 組件,它應(yīng)該對(duì)所有用戶(hù)進(jìn)行渲染,但用戶(hù) ID 不同。在 Vue Router 中,我們可以在路徑中使用一個(gè)動(dòng)態(tài)字段來(lái)實(shí)現(xiàn),我們稱(chēng)之為 路徑參數(shù) :
const User = { template: '<div>User</div>', } // 這些都會(huì)傳遞給 `createRouter` const routes = [ // 動(dòng)態(tài)字段以冒號(hào)開(kāi)始 { path: '/users/:id', component: User }, ]
現(xiàn)在像 /users/johnny 和 /users/jolyne 這樣的 URL 都會(huì)映射到同一個(gè)路由。
路徑參數(shù) 用冒號(hào) : 表示。當(dāng)一個(gè)路由被匹配時(shí),它的 params 的值將在每個(gè)組件中以 this.$route.params 的形式暴露出來(lái)。因此,我們可以通過(guò)更新 User 的模板來(lái)呈現(xiàn)當(dāng)前的用戶(hù) ID:
const User = { template: '<div>User {{ $route.params.id }}</div>', }
你可以在同一個(gè)路由中設(shè)置有多個(gè) 路徑參數(shù),它們會(huì)映射到 $route.params 上的相應(yīng)字段。例如:
匹配模式 | 匹配路徑 | route.params |
---|---|---|
/users/:username | /users/eduardo | { username: ‘eduardo’ } |
/users/:username/posts/:postId | /users/eduardo/posts/123 | { username: ‘eduardo’, postId: ‘123’ } |
除了 r o u t e . p a r a m s 之外, route.params 之外, route.params之外,route 對(duì)象還公開(kāi)了其他有用的信息,如 r o u t e . q u e r y (如果 U R L 中存在參數(shù))、 route.query(如果 URL 中存在參數(shù))、 route.query(如果URL中存在參數(shù))、route.hash 等。你可以在 API 參考中查看完整的細(xì)節(jié)。
四、動(dòng)態(tài)路由的添加
路由守衛(wèi)
找不到路由配置
常規(guī)參數(shù)只匹配 url 片段之間的字符,用 / 分隔。如果我們想匹配任意路徑,我們可以使用自定義的 路徑參數(shù) 正則表達(dá)式,在 路徑參數(shù) 后面的括號(hào)中加入 正則表達(dá)式 :
const routes = [ // 將匹配所有內(nèi)容并將其放在 `$route.params.pathMatch` 下 { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound }, // 將匹配以 `/user-` 開(kāi)頭的所有內(nèi)容,并將其放在 `$route.params.afterUser` 下 { path: '/user-:afterUser(.*)', component: UserGeneric }, ]
在這個(gè)特定的場(chǎng)景中,我們?cè)诶ㄌ?hào)之間使用了自定義正則表達(dá)式,并將pathMatch 參數(shù)標(biāo)記為可選可重復(fù)。這樣做是為了讓我們?cè)谛枰臅r(shí)候,可以通過(guò)將 path 拆分成一個(gè)數(shù)組,直接導(dǎo)航到路由:
this.$router.push({ name: 'NotFound', // 保留當(dāng)前路徑并刪除第一個(gè)字符,以避免目標(biāo) URL 以 `//` 開(kāi)頭。 params: { pathMatch: this.$route.path.substring(1).split('/') }, // 保留現(xiàn)有的查詢(xún)和 hash 值,如果有的話 query: this.$route.query, hash: this.$route.hash, })
到此這篇關(guān)于Vue router配置與使用分析講解的文章就介紹到這了,更多相關(guān)Vue router配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何用Vite構(gòu)建工具快速創(chuàng)建Vue項(xiàng)目
Vite是一個(gè)web開(kāi)發(fā)構(gòu)建工具,由于其原生?ES?模塊導(dǎo)入方法,它允許快速提供代碼,下面這篇文章主要給大家介紹了關(guān)于如何用Vite構(gòu)建工具快速創(chuàng)建Vue項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-05-05el-date-picker時(shí)間清空值為null處理方案
本文介紹關(guān)于Vue.js項(xiàng)目中時(shí)間選擇器組件的問(wèn)題,當(dāng)選擇后清空導(dǎo)致值變?yōu)閚ull,進(jìn)而引發(fā)后臺(tái)接口報(bào)錯(cuò),通過(guò)監(jiān)聽(tīng)`overallForm.time`的值并設(shè)置為空數(shù)組,成功解決此問(wèn)題,確保了數(shù)據(jù)正確性,同時(shí),建議避免直接監(jiān)聽(tīng)整個(gè)對(duì)象以?xún)?yōu)化性能,感興趣的朋友一起看看吧2024-08-08vue iview實(shí)現(xiàn)分頁(yè)功能
這篇文章主要為大家詳細(xì)介紹了vue iview實(shí)現(xiàn)分頁(yè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Vue3+TypeScript埋點(diǎn)方面的應(yīng)用實(shí)踐
本文詳細(xì)闡述了如何在Vue3中使用TypeScript實(shí)現(xiàn)埋點(diǎn)功能,包括全局注冊(cè)$track插件、Mixin實(shí)現(xiàn)全局埋點(diǎn)等,隨著Vue3的逐漸普及,在實(shí)際工作中采用Vue3+TypeScript實(shí)現(xiàn)埋點(diǎn)將會(huì)變得越來(lái)越流行2023-08-08Vue2.0實(shí)現(xiàn)組件數(shù)據(jù)的雙向綁定問(wèn)題
這篇文章主要介紹了Vue2.0實(shí)現(xiàn)組件數(shù)據(jù)的雙向綁定問(wèn)題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03Vue 打包的靜態(tài)文件不能直接運(yùn)行的原因及解決辦法
這篇文章主要介紹了Vue 打包的靜態(tài)文件不能直接運(yùn)行的原因及解決辦法,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下2020-11-11Vue支持搜索與篩選的用戶(hù)列表實(shí)現(xiàn)流程介紹
這篇文章主要介紹了Vue支持搜索與篩選的用戶(hù)列表實(shí)現(xiàn)流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10