VUE-Router的知識(shí)點(diǎn)總結(jié)

一、動(dòng)態(tài)路由匹配

形如:

const router = new VueRouter({ routes: [{ path: '/user/:id', component: User } ] })

后面的值就是動(dòng)態(tài)匹配的參數(shù),真正的路由值跳轉(zhuǎn)到冒號(hào)之前的路徑中,:后的值在this.$route.params中,可以在任意組件中被使用。
當(dāng)只有:后的參數(shù)改變的時(shí)候,原來的組件實(shí)例會(huì)被復(fù)用,意味著組建的生命周期不會(huì)再被調(diào)用

如果此時(shí)想要對(duì)參數(shù)的變化做出響應(yīng),可以watch$router

二、編程式導(dǎo)航

在vue實(shí)例內(nèi)部,可以通過$router訪問路由實(shí)例,可以通過this.$push(...)倆進(jìn)行頁面跳轉(zhuǎn)

跳轉(zhuǎn)有兩種方式:

聲明式跳轉(zhuǎn):<router-link :to="...">;
編程式跳轉(zhuǎn):router.push(...)

參數(shù)可以是一個(gè)path路徑,也可以包括params和query參數(shù)

router.push({ name: 'user', params: { userId: '123' }})
router.push({ path: 'register', query: { plan: 'private' }})

注意:如果提供path,則params會(huì)被覆蓋,可以用以下兩種方式替代

router.push({ name: 'user', params: { userId }}) // -> /user/123 router.push({ path: /user/${userId} }) // -> /user/123

router.replace和router.push區(qū)別:

push是向前推進(jìn)一個(gè)頁面(真正意義上的跳轉(zhuǎn),后退會(huì)返回當(dāng)前頁面),replace是替換當(dāng)前頁面(后退會(huì)返回當(dāng)前頁面的上一級(jí))
router的API大體上和window.history很像,可以參考理解

三、路由優(yōu)先級(jí)

當(dāng)一個(gè)路由可以匹配多個(gè)路由的時(shí)候,此時(shí),匹配的優(yōu)先級(jí)俺找路由的定義標(biāo)準(zhǔn),誰先定義的,誰的優(yōu)先級(jí)就越高

四、路由嵌套

路由通常由:路由實(shí)例,路由表,components組成,在項(xiàng)目中這幾部分可以按照需求進(jìn)行拆分,從而有更清晰的結(jié)構(gòu),當(dāng)我們需要在同級(jí)展示多個(gè)視圖的時(shí)候,我們需要為router-view設(shè)置名字

當(dāng)路由需要進(jìn)行嵌套的時(shí)候,只需要在路由表的頂級(jí)路由中嵌套子路由即可,如下

{ path: '/settings', component: UserSettings, 
children: [
{ path: 'emails', component: UserEmailsSubscriptions }, 
{ path: 'profile', components:
 { default: UserProfile, helper: UserProfilePreview }
 }] }

渲染時(shí):

<div> <h1>User Settings</h1> <NavBar/> <router-view/> <router-view name="helper"/> </div>

五、路由重定向

有時(shí)我們需要多個(gè)路徑指向同一個(gè)視圖,這時(shí)候就需要用到路由的重定向,一般在路由表的path后加一個(gè)redirect屬性就可以做到

參數(shù)可以是相對(duì)路徑:

const router = new VueRouter({ routes: [ { path: '/a', redirect: '/b' } ] })

也可以是命名路由

const router = new VueRouter({ routes: [ { path: '/a', redirect: { name: 'foo' }} ] })

也可以是一個(gè)方法

const router = new VueRouter({ routes: [ { path: '/a', redirect: to => { // 方法接收 目標(biāo)路由 作為參數(shù) // return 重定向的 字符串路徑/路徑對(duì)象 }} ] })
路由重定向和路由別名的區(qū)別:

重定向是先訪問到/a,然后路由會(huì)把頁面重定向到/b,跳轉(zhuǎn)了兩次;別名是直接跳轉(zhuǎn)到對(duì)應(yīng)url,只經(jīng)歷一次跳轉(zhuǎn)

六、路由組件傳參

有時(shí)我們?cè)谶M(jìn)行路由跳轉(zhuǎn)的時(shí)候,不可避免的會(huì)遇到需要傳遞參數(shù)的情況,這時(shí)候就需要利用路由進(jìn)行傳參,但在之前我們的參數(shù)都是通過$router.params來進(jìn)行傳遞的,這樣就造成了組件和URL過于耦合,組件只能在特定的url上使用,所以這時(shí)候我們就需要引入props進(jìn)行解綁

const User = { props: ['id'], template: '<div>User {{ id }}</div>' } 
const router = new VueRouter({ 
routes: [ { path: '/user/:id', 
component: User, props: true }, 
// 對(duì)于包含命名視圖的路由,你必須分別為每個(gè)命名視圖添加 `props` 選項(xiàng):
 { path: '/user/:id', 
components: { default: User, sidebar: Sidebar }, 
props: { default: true, sidebar: false } } ] })

七、路由守衛(wèi)

路由守衛(wèi)顧名思義,就是在路由進(jìn)行跳轉(zhuǎn)之前或之后進(jìn)行的判斷,參數(shù)或查詢的改變并不會(huì)觸發(fā)進(jìn)入/離開的導(dǎo)航守衛(wèi),

它一般分為:全局

1.png

單個(gè)路由獨(dú)享

2.png

組件

3.png
4.png

每個(gè)守衛(wèi)方法都有三個(gè)參數(shù)

  • to: Route: 即將要進(jìn)入的目標(biāo) 路由對(duì)象
  • from: Route: 當(dāng)前導(dǎo)航正要離開的路由
  • next: Function: 一定要調(diào)用該方法來 resolve 這個(gè)鉤子

通常情況下登錄路由守衛(wèi)

5.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 那這次呢?我決定直接就先放一個(gè)小小demo上來 其實(shí)我們?cè)谝雟ue-router插件那一刻,我們的網(wǎng)頁就已經(jīng)附帶...
    看物看霧閱讀 921評(píng)論 0 1
  • 路由實(shí)現(xiàn)的方式 聲明式。<router-link :to="..."> 編程式。router.push(...) ...
    SailingBytes閱讀 1,211評(píng)論 1 3
  • 學(xué)習(xí)目的 學(xué)習(xí)Vue的必備技能,必須 熟練使用 Vue-router,能夠在實(shí)際項(xiàng)目中運(yùn)用。 Vue-rout...
    _1633_閱讀 92,914評(píng)論 3 58
  • SPA單頁應(yīng)用 傳統(tǒng)的項(xiàng)目大多使用多頁面結(jié)構(gòu),需要切換內(nèi)容的時(shí)候我們往往會(huì)進(jìn)行單個(gè)html文件的跳轉(zhuǎn),這個(gè)時(shí)候受網(wǎng)...
    視覺派Pie閱讀 12,186評(píng)論 1 55
  • 自卑——有 在和朋友吃飯間聊到自卑這個(gè)話題,我們不禁相視一笑,這是我們的秘密呀! 不知道你們有沒有那種感...
    關(guān)于安閱讀 242評(píng)論 0 1

友情鏈接更多精彩內(nèi)容