vue(六)之路由導航守衛

Vue CLI2詳解

在這裏插入圖片描述
package.json文件中dependencies是運行時依賴,devDependencies是開發時依賴
** vue程序運行過程:template->ast->render->virtual dom->真實dom**
runtime-compiler的運行過程:template->ast->render->virtual dom->真實dom
runtime-only的運行過程:render->virtual dom->真實dom。所以這種方式更快,性能更高,同時代碼量也更少
runtime-only的情況下.vue文件中的template是由vue-template-compiler進行處理的

main.js中的render的原理

在這裏插入圖片描述
被傳入的組件
在這裏插入圖片描述

vue-cli3與2的區別

在這裏插入圖片描述

箭頭函數類似於java8lambda表達式

定義函數的方式一
在這裏插入圖片描述
定義函數的方式二
在這裏插入圖片描述
將方式一函數改爲箭頭函數
在這裏插入圖片描述
兩個參數的情形
在這裏插入圖片描述
一個參數的時候小括號可以省略
在這裏插入圖片描述
函數塊內多行代碼的情形
在這裏插入圖片描述
函數塊內只有一行代碼可以進行簡寫
在這裏插入圖片描述

後端路由

在這裏插入圖片描述

前端路由

spa: single page application web
在這裏插入圖片描述

通過hash改變url

在這裏插入圖片描述

url的history

在這裏插入圖片描述
replaceState相對於pushState的區別:不能前進後退
在這裏插入圖片描述
在這裏插入圖片描述

vue-router

在這裏插入圖片描述

具體代碼實現

在這裏插入圖片描述
第三步將router對象傳入vue實例裏面
先導出
在這裏插入圖片描述
然後再在vue導入引用,導入的時候是默認去找文件夾中的index.js文件
在這裏插入圖片描述

使用vue-router在這裏插入圖片描述

router-link用於鏈接到某個地址,最終會被渲染爲一個a標籤,router-view將對應的組件渲染到也頁面的相應位置

設置路由的默認路徑

在這裏插入圖片描述
路勁訪問的時候的默認是hash模式,此模式下路徑中可能會存在#號,所以可以改爲history即可解決,在router中將mode設置爲history即可
在這裏插入圖片描述

router-link的其他屬性

在這裏插入圖片描述
代碼實現
在這裏插入圖片描述
在每個router-link設置active-class屬性比較麻煩,可以直接在router中設置linkActiveClass:'active’就能爲每一個router-link設置上active-class屬性了
在這裏插入圖片描述

通過代碼跳轉路由:主要是通過vue組件自帶的$router屬性,有replace和push兩個方法

在這裏插入圖片描述

動態路由

一:在router的path結尾加上:和一個變量名
在這裏插入圖片描述
二:在跳轉處拼接上對應abc的值
在這裏插入圖片描述
三:還可以通過$route獲得對應的值
在這裏插入圖片描述

$router與 $route的區別: $router是獲取所有的router, $route是獲取當前被激活的router

通過 UglifyJsPlugin對打包的js文件進行醜化

路由懶加載的效果

使用懶加載後,打包成的業務js文件就會因爲懶加載組件的數量而產生相應的改變
在這裏插入圖片描述

實現懶加載

在這裏插入圖片描述

具體的代碼實現

在這裏插入圖片描述

路由嵌套

在這裏插入圖片描述
子路由不加’/'
在這裏插入圖片描述
在這裏插入圖片描述
通過router-view將子組件添加到父頁中
在這裏插入圖片描述

參數的傳遞

在這裏插入圖片描述
代碼實現:在query中填入對象屬性
在這裏插入圖片描述
然後就會出現在地址的後面
在這裏插入圖片描述
然後再通過$route取出來
在這裏插入圖片描述

使用query以代碼的方式跳轉頁面

在這裏插入圖片描述

導航守衛具體案例

在這裏插入圖片描述
前置守衛(guard)beforeEach,路由跳轉之前調用:其中next()必須寫上
在這裏插入圖片描述
其中的meta.title是在路由裏面寫入的
在這裏插入圖片描述
後置鉤子(hook)afterEach,路由跳轉之後調用
在這裏插入圖片描述
還有一些路由獨享的守衛,具體可以查看vue-router的官網
在這裏插入圖片描述
路由獨享的守衛例子,beforeEnter
在這裏插入圖片描述

使用keep-alive避免某些組件的重複加載

在這裏插入圖片描述
具體的代碼實現
在這裏插入圖片描述
activated與deactivated能否使用取決於展示的組件是否被keep-alived包裹
在這裏插入圖片描述

Profile.vue希望每次重新加載的實現

在這裏插入圖片描述
將profile中的name放入exclude中即可
在這裏插入圖片描述
將多個頁面寫入exclude中時,如同正則表達式的一樣,逗號後不要加空格
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章