【Vue】路由

快速入門


  1. 安裝路由
npm install --save vue-router
  1. 定義組件
<template>
  <div>
    <h3>Home</h3>
    <router-link to="/login">Login</router-link>
  </div>
</template>
<script>
export default {};
</script>
  1. 定義路由規(guī)則
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

export default new VueRouter({
    mode: 'history',
    routes: [
        { path: '/', component: () => import('../views/home.vue') },
        { path: '/login', component: () => import('../views/login.vue') },
    ]
});
  1. 在需要顯示路由位置放<router-view />
    <router-view />

這就完成一個簡單路由

深入路由


基礎

VueRouter.model :

  • hash(默認):使用 URL 的 hash 來模擬一個完整的 URL
  • history :利用 history.pushState API 來完成 URL 跳轉而無須重新加載頁面
    <router-link> : 路由功能導航塑径,默認生成<a>標簽些己,可以使用tag屬性修改生成的標簽
    <router-view />
  • 路由出口阴挣,匹配到的路由會在這里渲染
動態(tài)路由

通常鏈接需要帶上參數,根據參數顯示不同結果
Vue動態(tài)路由用":" 匹配路徑參數幔烛,然后就匹配的參數放入$route.params

  1. 定義動態(tài)路由,這里需要對路由命名,獲取名稱和性別
        { path: '/login/:username/:sex', name: 'login', component: () => import('../views/login.vue') },
  1. 路由鏈接 - 需要路由命名
<router-link :to="{ name: 'login',  params: { username, sex } }">Login</router-link>
<!--等價于-->
<router-link to="/login/WilsonPan/1">Login</router-link>
  1. 組件獲取路由參數
<h3>username : {{ this.$route.params.username }}</h3>
<h3>sex : {{ this.$route.params.sex === 1 ? "男" : "女" }}</h3>

注:除了可以設置路由參數鉴吹,還可以設置query參數

<router-link :to="{ name: 'login', query: { id: 3 }, params: { username, sex } }">Login</router-link>
<!--等價于-->
<router-link to="/login/WilsonPan/1?id=3">Login</router-link>

組件獲取query參數

<h3>id : {{ this.$route.query.id }}</h3>
嵌套路由

一個路由渲染的頁面包含另外的路由

  1. 定義路由
{
            path: '/', 
            name: 'home', 
            component: () => import('../views/home.vue'), 
            children: [
                { path: '/', component: () => import('../components/ComponentDemo.vue') },
                { path: '/directives', component: () => import('../components/Directives.vue') }

            ]
        }
  1. 在需要顯示子路由的地方放子路由渲染頁面
<router-view />
導航守衛(wèi)

導航守衛(wèi)主要用來通過跳轉或取消的方式守衛(wèi)導航良风,導航守衛(wèi)有全局的谊迄,單個路由的,組件級別烟央,用于未登錄控制訪問统诺,控制訪問等。

全局路由

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  // ...
})
  • to: Route: 即將要進入的目標路由對象
  • from: Route: 當前導航正要離開的路由
  • next: Function: 一定要調用該方法來 resolve 這個鉤子疑俭。執(zhí)行效果依賴 next 方法的調用參數粮呢。

路由獨享的守衛(wèi)

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})

組件內的守衛(wèi)

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染該組件的對應路由被 confirm 前調用
    // 不!能钞艇!獲取組件實例 `this`
    // 因為當守衛(wèi)執(zhí)行前啄寡,組件實例還沒被創(chuàng)建
  },
  beforeRouteUpdate (to, from, next) {
    // 在當前路由改變,但是該組件被復用時調用
    // 舉例來說哩照,對于一個帶有動態(tài)參數的路徑 /foo/:id挺物,在 /foo/1 和 /foo/2 之間跳轉的時候,
    // 由于會渲染同樣的 Foo 組件飘弧,因此組件實例會被復用识藤。而這個鉤子就會在這個情況下被調用。
    // 可以訪問組件實例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 導航離開該組件的對應路由時調用
    // 可以訪問組件實例 `this`
  }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末眯牧,一起剝皮案震驚了整個濱河市蹋岩,隨后出現的幾起案子,更是在濱河造成了極大的恐慌学少,老刑警劉巖剪个,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異版确,居然都是意外死亡扣囊,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門绒疗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侵歇,“玉大人,你說我怎么就攤上這事吓蘑√杪牵” “怎么了坟冲?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長溃蔫。 經常有香客問我健提,道長,這世上最難降的妖魔是什么伟叛? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任私痹,我火速辦了婚禮,結果婚禮上统刮,老公的妹妹穿的比我還像新娘紊遵。我一直安慰自己,他們只是感情好侥蒙,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布暗膜。 她就那樣靜靜地躺著,像睡著了一般鞭衩。 火紅的嫁衣襯著肌膚如雪桦山。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天醋旦,我揣著相機與錄音恒水,去河邊找鬼。 笑死饲齐,一個胖子當著我的面吹牛钉凌,可吹牛的內容都是我干的。 我是一名探鬼主播捂人,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼御雕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了滥搭?” 一聲冷哼從身側響起酸纲,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瑟匆,沒想到半個月后闽坡,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡愁溜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年疾嗅,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冕象。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡代承,死狀恐怖,靈堂內的尸體忽然破棺而出渐扮,到底是詐尸還是另有隱情论悴,我是刑警寧澤掖棉,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站膀估,受9級特大地震影響啊片,放射性物質發(fā)生泄漏。R本人自食惡果不足惜玖像,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望齐饮。 院中可真熱鬧捐寥,春花似錦、人聲如沸祖驱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捺僻。三九已至乡洼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匕坯,已是汗流浹背束昵。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留葛峻,地道東北人锹雏。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像术奖,于是被迫代替她去往敵國和親礁遵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內容

  • ? 通常我們會用一個或多個路由表采记,來匹配所有頁面的路徑佣耐。但這不能滿足一些特定的需求。 # 解惑 ? 好幾次被問到怎...
    果汁涼茶丶閱讀 2,240評論 0 8
  • 路由 注入實例 此后可以在任何組件內通過 this.$router 訪問路由器(或通過import導入router...
    李霖弢閱讀 405評論 0 0
  • 前言:現在 Vue 的路由已經開始大規(guī)模應用在單頁面應用上了唧龄。比較常見的就是路由網址中的 URL 里面的hash(...
    CondorHero閱讀 574評論 0 1
  • Vue Router 官網已經寫得很好了兼砖,這里自己再總結鞏固下。(注意:這里所有的例子都是基于Vue/cli 3....
    李牧敲代碼閱讀 835評論 1 1
  • 做父母的不可能包辦一切既棺,動物界的法則不能一味照搬到人類社會掖鱼。如果你要送給孩子一個禮物,那就是讓孩子有獨自應對這個變...
    Lifefullofjoy閱讀 356評論 2 0