純小白入手 vue3.0 CLI - 3.2 - 路由的初級使用


vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html

盡量把紛繁的知識,肢解重組成為可以堆砌的知識。

學會工具並不難,思考如何運用這些工具,才是編程或者工作中最難的部分。

我的 github 地址 - vue3.0Study - 階段學習成果都會建立分支。

==========================

動態路由

在路由某部分里加入[ : ],就成為動態路由如:/user/:id/,那么路由導航,並不是  /user/id/ 而是 /user/666/。

顯然這個 id 能被獲取,在組件中使用。通過 this.$route.params 獲取。 this 是當前組件,$route 是路由對象,params 是一個對象字面量 { id:666 }。

$route 通過 Vue.use(Router) 和 new Vue({ router, store, render: h => h(App) }).$mount('#app') 全局依賴注入,在所有組件中都可以使用它。

1、router.js 中 path: '/about' 路由 改為 path: '/about/:id'。

2、About.vue 中 <top-nav title="軍事" :class="{ active: isActive }"/> 添加紅色部分。

3、About.vue 中 data 或者 computed 屬性中添加 isActive: function () { return this.$route.params.id === "666"; }

4、App.vue 中 <router-link to="/about/666">VUE</router-link>

5、About.vue 中 <style lang="less"> .active { background: red; } </style>

保存點擊【VUE】導航按鈕,即可見到效果:

如何取得 $route 中參數的值,便是很大的進步。這個參數可以用在任何地方,可以用來做任何事情。

比如傳遞數據,根據路由參數動態從服務器獲取組件內容等

在進行下一個內容學習之前,commit 一下。

嵌套路由(子路由) 

在頁面,通常存在多級導航。vue 官方網站便是多級導航的例子:頂部為一級導航欄,左側為二級導航欄。

導航通常對應 <router-link> 而 <router-link> 與 <router-view/> 對應。

並非只有 App.vue 中才能存在 <router-view/>, 任何組件都可以。

下面把 HelloWorld.vue 變為 About.vue 的子路由:

1、<HelloWorld msg="vue 官方相關資料的鏈接"/> 替換為  <router-view/>

2、router.js 中關於 About.vue 組件的路由 替換為

    {
      path: '/about/:id',
      name: 'about',
      // route level code-splitting
      // this generates a separate chunk (about.[hash].js) for this route
      // which is lazy-loaded when the route is visited.
      component: () => import(/* webpackChunkName: "about" */ './views/About.vue'),
      children: [
        {
          path: '1',
          component: HelloWorld,
          props: (router) => ({
            msg: router.query.msg
          })
        }
      ]
    }

在瀏覽器地址欄輸入 http://localhost:8081/#/about/666/1?msg='welcome to nDos blog' 查看效果。

編程式導航與路由命名

在 vue 初始化的工程中,路由配置時,組件都已做好命名。這便是路由命名。

編程式導航,盡量使用命名的路由,如下:

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

因為使用 path 屬性進行編程式導航,params 無效。

這樣使用路由跳轉,使得單頁面編程的路由跳轉更加靈活。比如某個跳轉按鈕,可以綁定函數,進行條件跳轉。

關於這兩個的內容並不多,參照官網教程學習。

命名視圖

在一個組件中,如果有多個組件出口,比如:在某個頁面,需要同時展示很多個組件時。

只有一個 <router-view/> 顯然不能滿足需求。

多個 <router-view/> 同時存在的時候,就必須要加以區分,用的是 name 屬性:<router-view name="a"/>

在 router.js 中的 components 屬性中,添加多個組件即可 ( 到這里才明白為什么 components 為什么是復數形式的寫法  )。

路由參數

在介紹動態路由的時候,已經看到路由參數的應用,這個東西也不復雜,參照官方教程學習。

==========================

關於路由的初級知識到這里介紹完。

下面會開始學習工作中常用的路由知識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM