1. 程式人生 > >vue-router的巢狀路由,重定向和別名

vue-router的巢狀路由,重定向和別名

1.命名路由

    有時候,通過一個名稱來標識一個路由顯得更方便一些,特別是在連結一個路由,或者是執行一些跳轉的時候。你可以在建立 Router 例項的時候,在 routes 配置中給某個路由設定名稱。我個人理解就相當於給路徑取個名字,呼叫的時候,這個名字就指這個路徑,不然有些路徑很長,直接寫太麻煩。

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

要連結到一個命名路由,可以給 router-link

 的 to 屬性傳一個物件:

<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

或者程式碼呼叫 router.push():

router.push({ name: 'user', params: { userId: 123 }})

這兩種方式都會把路由導航到 /user/123 路徑。

2.路由巢狀

    有時候,我們會有這樣的需求 :

    ①將App.vue用作主路由視窗,有著一個main內容(一般是頂欄和低欄),其他所有的子元件都基於App.vue渲染,這樣路由配置可以配置成同一級的,每次跳轉路由都銷燬之前的路徑。

    ②但是大部分時候,我們不一定非要基於App.vue的所有樣式,意思就是整個工程有樣式不同的好幾種頁面,比方說有些頁面都要頂欄和低欄,有些頁面只要頂欄...   

    這時候採取的解決方法是:ⅠApp.vue僅作為一個路由視窗,不新增任何內容,僅僅是為了對映其他子元件。

                                                    Ⅱ子元件單獨建立兩個類似於App.vue作用的元件,用來提供所需樣式,並對映其他分別基於此的孫子元件。這時候路由index.js配置時要用到children,redirect,'',/等

3.重定向與別名

 { path: '/a', redirect: '/b' } // 從/a重定向到/b

 上面意思是跳轉到/a時自動就變成/b了,所以永遠不會跳轉到/a,可以用來授權登陸前的驗證判斷

重定向的目標也可以是一個命名的路由:

{ path: '/a', redirect: { name: 'b' }}

 甚至是一個方法,動態返回重定向目標:

    { path: '/a', redirect: to => {
      // 方法接收 目標路由 作為引數
      // return 重定向的 字串路徑/路徑物件
    }}

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

重定向和別名的區別

重定向:當用戶訪問 /a時,URL 將會被替換成 /b,然後匹配路由為 /b,那麼『別名』又是什麼呢?

 別名:/a 的別名是 /b,意味著,當用戶訪問 /b 時,URL 會保持為 /b,但是路由匹配則為 /a,就像使用者訪問 /a一樣。

上面對應的路由配置為:

{ path: '/a', component: A, alias: '/b' }

『別名』的功能讓你可以自由地將 UI 結構對映到任意的 URL,而不是受限於配置的巢狀路由結構。

4.url開啟自動跳轉到‘/’。 而‘’則意味著自動跳轉到上一級時自動跳轉空路徑

    { path: '/', redirect: '/header' }, // 重定向到/header
    { path: '/header',
      name: 'header',
      component: Header,
      children: [
        { path: '', redirect: 'login' }, // 預設跳轉到/header/login
        { path: 'login', name: 'login', component: Login },
        { path: 'register', name: 'register', component: Register },
        { path: 'forgetPassword', name: 'forgetPassword', component: ForgetPassword }
      ]
    },

相關推薦

vue-router路由定向別名

1.命名路由     有時候,通過一個名稱來標識一個路由顯得更方便一些,特別是在連結一個路由,或者是執行一些跳轉的時候。你可以在建立 Router 例項的時候,在 routes 配置中給某個路由設定名稱。我個人理解就相當於給路徑取個名字,呼叫的時候,這個名字就指這個路徑,不

vue-router路由定向問題

存在這樣一個路由routes: [ { path: '/home', name: 'home', component: Nav, children: [ { path: 'index'

vuerouter路由設定及預設選擇

巢狀路由 應用場景:用vue-router 設定一個頁面的路由的時候,在其頁面元件內也需要用到,用一個專案來舉例子 我在app.vue中設定路由出口對其他頁面元件.設定路徑,比如home 首頁設定,在router資料夾index.js中設定 routes: [ { path:

vue2.0子路由配置跳轉 vue-router: 路由

路由跳轉 <li class="nav_li" v-link="{ path: '/home/reg'}"></li> <router-link to="/home/reg">註冊</router-link> this.

Vue-router路由的使用

路由使用的時候需要設定路由的路徑: ew Router({ // mode: 'abstract', routes: [ { path: '/top', component: Top }, { path: '/new', component: New

vue-router中定義動態路由路由並動態獲取引數

路由的定義,主要有以下幾步: 如果是模組化機制,需要呼叫 Vue.use(VueRouter) 定義路由元件,如: const Foo = { template: '<div>foo</div>' }; 定義路由(陣列):

vue路由介紹命名路由路由命名檢視

路由,對於大多數單頁面應用,都推薦使用官方支援的 vue-router 庫。更多細節可以看 vue-router 文件https://router.vuejs.org/。以下為簡單實現路由的程式碼: 寫html       <div class="tab-item"&g

vue-router+檢視路由

一、巢狀路由(配置好父路由component後,在父路由下面新增children屬性來配置這個父路由的子路由) 需要注意的是:父元件中的<router-view></router-view>是子元件的佔位符是必不可少的 巢狀路由的現象:點選了路由跳

AngularJS ui-router (路由)

  我們都知道,如果使用原生路由的話,Angular的檢視是通過ng-view這個指令進行載入的。比如這樣:<div ng-view></div>。一般,我們都會把這個指令放在index.html這個檔案裡面,然後,通過控制器來載入相應的模板檢視。比

vue-router動態註冊路由實現無需註冊頁面可跳轉

demo工程地址:https://github.com/martSforever/test-router 先說一下特性: 無需註冊頁面路由,可直接跳轉; 頁面地址可以在資料庫中配置; 頁面分包載入,進行頁面路由跳轉的時候才去載入頁面元

vue-router命名檢視

/settings/emails /settings/profile +-----------------------------------+ +---------

定向別名

router pat new dex 組件 outer path out 定向 new router({   routes:[     {       path: ‘/‘,       conponent: home,       name: ‘Home‘,       a

Vue router 路由 路由定向 路由別名 router-link傳引數

<template> <div> 這是商品列表頁面 <router-link :to="{ name: 'title'}">標題</router-link> <router-link to="/good

vue路由與404定向實現方法分析

第一部分: vue巢狀路由 巢狀路由是什麼? 巢狀路由就是在一個被路由過來的頁面下可以繼續使用路由,巢狀也就是路由中的路由的意思。 比如在vue中,我們如果不使用巢狀路由,那麼只有一個<router-view>,但是如果使用,那麼在一個元件中就還有<router-view>,這也就構

Vue-router學習筆記——遇到的坑(一)history模式重新整理/設定路由顯示404/cannot find(webpack配置)

前端路由有兩種,一種是hash模式,一種是history模式。 這兩種模式的url路徑都不需要真實存在,只需要為前端跳轉做一個顯示。 hash模式的url路徑會帶有#,看起來不太舒服且不好做SEO,但是因為瀏覽器向伺服器請求時會自動忽略#後面的值,所以在瀏覽器中重新整理還是

Vue 爬坑之旅--路由預設選中第一個子路由並且主路由路由都處於啟用狀態

在實際開發中,巢狀路由經常會用到,基本用法也很簡單,今天要說的不是巢狀路由怎麼用,而是在用的過程中發現的二點小細節的處理。 巢狀路由中預設選中第一個子路由 在一個這樣的介面中,底部的五個 tab 顯然應該是五個路由,現在在首頁這個路由下面又有三個 tab

vue-router路由

模板抽離 我們已經學習過了Vue模板的另外定義形式,使用<template></template>。 <!-- 模板抽離出來 --> <template id="home">

Vue+vue-router+Webpack4模擬登陸跳轉路由功能(非vue-cli)

Webpack實現的功能 打包和輸出html 打包,分離,壓縮和輸出css檔案 vue模板解析 自定義輸出js檔案路徑和名稱等 demo的基本功能 使用vue-router模擬登陸和跳轉 vue-router巢狀路由模擬登陸後切換頁面 packag

vue路由配置children路由

巢狀路由就是路由裡面巢狀他的子路由,可以有自己的路由導航和路由容器(router-link、router-view),通過配置children可實現多層巢狀 //mine元件 <template

vue-router菜鳥進階!(路由VS命名路由)

巢狀路由 一個被渲染元件可以包含自己的巢狀< router-view >。 要在巢狀的出口中渲染元件,需要在VueRouter的引數中使用children配置: <script src="https://unpkg.com/vue/dis