1. 程式人生 > 遊戲攻略 >《艾爾登法環》雙矛流PVP配裝參考

《艾爾登法環》雙矛流PVP配裝參考

路由

前端路由的概念與原理

  • 什麼是路由

    • 路由(英文:router)就是對應關係

  • SPA 與前端路由

    • SPA 指的是一個 web 網站只有唯一的一個 HTML 頁面,所有元件的展示與切換都在這唯一的一個頁面內完成。 此時,不同元件之間的切換需要通過前端路由來實現。

    • 結論:在 SPA 專案中,不同功能之間的切換,要依賴於前端路由來完成!

  • 什麼是前端路由

    • 通俗易懂的概念:Hash 地址元件之間的對應關係

  • 前端路由的工作方式

    • ① 使用者點選了頁面上的路由連結

    • ② 導致了 URL 位址列中的 Hash 值發生了變化

    • 前端路由監聽了到 Hash 地址的變化

    • ④ 前端路由把當前 Hash 地址對應的元件渲染都瀏覽器中

    • 結論:前端路由,指的是 Hash 地址元件之間對應關係

  • 實現簡易的前端路由

    • 步驟1:通過<component>標籤,結合 comName 動態渲染元件。示例程式碼如下:

    • 步驟2:在 App.vue 元件中,為<a>連結新增對應的 hash 值

    • 步驟3:在 created 生命週期函式中,監聽瀏覽器位址列中 hash 地址的變化,動態切換要展示的元件的名稱:

vue-router 的基本用法

  • 什麼是 vue-router

    • vue-router 是 vue.js 官方給出的路由解決方案

      。它只能結合 vue 專案進行使用,能夠輕鬆的管理 SPA 專案 中元件的切換。

    • vue-router 的官方文件地址:https://router.vuejs.org/zh/

  • vue-router 安裝和配置的步驟

    • ① 安裝 vue-router 包

    • 建立路由模組

    • ③ 匯入並掛載路由模組

    • ④ 宣告路由連結佔位符

    • 1、在專案中安裝 vue-router

      • 在 vue2 的專案中,安裝 vue-router 的命令如下:

    • 2、建立路由模組

      • src 原始碼目錄下,新建 router/index.js 路由模組,並初始化如下的程式碼:

    • 3、匯入並掛載路由模組

      • 在 src/main.js 入口檔案中,匯入並掛載路由模組。示例程式碼如下:

    • 4、宣告路由連結佔位符

      • 在 src/App.vue 元件中,使用 vue-router 提供的<router-link><router-view>宣告路由連結和佔位符:

  • 宣告路由的匹配規則

    • 在 src/router/index.js 路由模組中,通過 routes 陣列宣告路由的匹配規則。示例程式碼如下:

vue-router 的常見用法

  • 路由重定向

    • 路由重定向指的是:使用者在訪問地址 A 的時候,強制使用者跳轉到地址 C ,從而展示特定的元件頁面。 通過路由規則的 redirect 屬性,指定一個新的路由地址,可以很方便地設定路由的重定向:

  • 巢狀路由

    • 通過路由實現元件的巢狀展示,叫做巢狀路由。

    • 1、宣告子路由連結子路由佔位符

      • About.vue 元件中,宣告 tab1 和 tab2 的子路由連結以及子路由佔位符。示例程式碼如下:

    • 2、通過 children 屬性宣告子路由規則

      • 在 src/router/index.js 路由模組中,匯入需要的元件,並使用 children 屬性宣告子路由規則:

  • 動態路由匹配

    • 思考:有如下 3 個路由連結:

    • 定義如下 3 個路由規則,是否可行???

    • 缺點:路由規則的複用性差

    • 1、動態路由的概念

      • 動態路由指的是:把 Hash 地址中可變的部分定義為引數項,從而提高路由規則的複用性。 在 vue-router 中使用英文的冒號(:)來定義路由的引數項。示例程式碼如下:

    • 2、$route.params 引數物件

      • 動態路由渲染出來的元件中,可以使用 this.$route.params 物件訪問到動態匹配的引數值

    • 3、使用 props 接收路由引數

      • 為了簡化路由引數的獲取形式,vue-router 允許在路由規則中開啟 props 傳參。示例程式碼如下:

  • 宣告式導航 & 程式設計式導航

    • 在瀏覽器中,點選連結實現導航的方式,叫做宣告式導航。例如:

      • 普通網頁中點選<a> 連結、vue 專案中點選 <router-link>都屬於宣告式導航

    • 在瀏覽器中,呼叫 API 方法實現導航的方式,叫做程式設計式導航。例如:

      • 普通網頁中呼叫 location.href 跳轉到新頁面的方式,屬於程式設計式導航

    • 1、vue-router 中的程式設計式導航 API

      • vue-router 提供了許多程式設計式導航的 API,其中最常用的導航 API 分別是:

      • ① this.$router.push('hash 地址')

        • 跳轉到指定 hash 地址,並增加一條歷史記錄

      • ② this.$router.replace('hash 地址')

        • 跳轉到指定的 hash 地址,並替換掉當前的歷史記錄

      • ③ this.$router.go(數值 n)

        • 實現導航歷史前進、後退

    • 2、 $router.push

      • 呼叫 this.$router.push() 方法,可以跳轉到指定的 hash 地址,從而展示對應的元件頁面。示例程式碼如下:

    • 3、 $router.replace

      • 呼叫 this.$router.replace() 方法,可以跳轉到指定的 hash 地址,從而展示對應的元件頁面。

      • push 和 replace 的區別:

        • push 會增加一條歷史記錄

        • replace 不會增加歷史記錄,而是替換掉當前的歷史記錄

    • 4、 $router.go

      • 呼叫 this.$router.go() 方法,可以在瀏覽歷史中前進和後退。示例程式碼如下:

    • 5、$router.go 的簡化用法

      • 在實際開發中,一般只會前進和後退一層頁面。因此 vue-router 提供瞭如下兩個便捷方法:

        • ① $router.back()

          • 在歷史記錄中,後退到上一個頁面

        • ② $router.forward()

          • 在歷史記錄中,前進到下一個頁面

  • 導航守衛

    • 導航守衛可以控制路由的訪問許可權。示意圖如下:

    • 1、全域性前置守衛

      • 每次發生路由的導航跳轉時,都會觸發全域性前置守衛。因此,在全域性前置守衛中,程式設計師可以對每個路由進行 訪問許可權的控制:

    • 2、守衛方法的 3 個形參

      • 全域性前置守衛的回撥函式中接收 3 個形參,格式為:

    • 3、next 函式的 3 種呼叫方式

      • 參考示意圖,分析 next 函式的 3 種呼叫方式最終導致的結果:

      • 當前使用者擁有後臺主頁的訪問許可權,直接放行:next()

      • 當前使用者沒有後臺主頁的訪問許可權,強制其跳轉到登入頁面:next('/login')

      • 當前使用者沒有後臺主頁的訪問許可權,不允許跳轉到後臺主頁:next(false)

    • 4、控制後臺主頁的訪問許可權

後臺管理案例

  • 案例效果

  • 案例用到的知識點

    • 命名路由

    • 路由重定向

    • 導航守衛

    • 巢狀路由

    • 動態路由匹配

    • 程式設計式導航

總結

  • ① 能夠知道如何在 vue 中配置路由

    • createRouter、app.use(router)

  • ② 能夠知道如何使用巢狀路由

    • 通過 children 屬性進行路由巢狀

  • ③ 能夠知道如何實現動態路由匹配

    • 使用冒號宣告引數項、this.$route.params、props: true

  • ④ 能夠知道如何使用程式設計式導航

    • this.$router.push、this.$router.go

  • ⑤ 能夠知道如何使用導航守衛

    • 路由例項.beforeEach((to, from, next) => { /* 必須調 next 函式 */ })