《艾爾登法環》雙矛流PVP配裝參考
前端路由的概念與原理
-
什麼是路由
-
路由(英文:router)就是對應關係。
-
-
-
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-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
-