在前幾天的內容中有提到,透過使用<router-link>
加上 to 屬性可以建立路由連結,取代傳統的 <a>
標籤,今天的內容將探討 <router-link>
的其他功能以及導航守衛(Navigation Guards)。
主要功用是建立路由連結。
透過使用 router.push( ) 和 router.replace( ) 操作路由,也可以達到和上述相同的效果。
導航守衛就像是路由的守門員,透過跳轉或取消導航的方式來保護路由,並且可以在 callback 函式裡執行其他動作,又可以分為全域、路由、元件三種不同的 Hook 函式,此外每個守衛方法都會接收兩個參數:
表示掌管 router「全域」的守衛。
在 router 物件內註冊 Hook 函式。
在單一元件內註冊 Hook 函式。
當路由跳轉時,Hook 函式執行的順序
以下取自官方文件的內容
1.導航被觸發。
2.在失活的元件裡呼叫beforeRouteLeave守衛。
3.調用全域的beforeEach守衛。
4.在重複使用的元件裡呼叫beforeRouteUpdate守衛(2.2+)。
5.在路由配置裡呼叫beforeEnter。
6.解析異步路由組件。
7.在被啟動的元件裡調用beforeRouteEnter。
8.呼叫全域的beforeResolve守衛(2.5+)。
9.導航被確認。
10.調用全域的afterEach鉤子。
11.觸發DOM 更新。
12.呼叫beforeRouteEnter守衛中傳給next的回呼函數,建立好的元件實例會作為回呼函數的參數傳入。
https://book.vue.tw/CH4/4-2-route-settings.html
https://router.vuejs.org/zh/guide/essentials/nested-routes.html
https://ithelp.ithome.com.tw/articles/10276947
https://docs-99.vercel.app/Vue/navigation-guards.html