vue-router导航守卫

为什么使用导航守卫?
我们来考虑一个需求: 在一个SPA应用中, 如何改变网页的标题呢?

网页标题是通过
可以通过JS来修改
更好的办法-使用导航守卫
vue-router提供的导航守卫主要用来监听监听路由的进入和离开的.
vue-router提供了beforeEach和afterEach的钩子函数, 它们会在路由即将改变前和改变后触发.

导航守卫使用
我们可以利用beforeEach来完成标题的修改.
首先, 我们可以在钩子当中定义一些标题, 可以利用meta来定义
其次, 利用导航守卫,修改我们的标题.

import Vue from ‘vue’
import VueRouter from ‘vue-router’

const Home = () => import('../components/Home.vue')
const User = () => import('../components/User.vue')

Vue.use(VueRouter)

const routes = [
    {
        path: '/home', 
        redirect: './home',
        // 元数据 (描述数据的数据)
        meta: {
            title: '首页'
        }
    },
    {
        path: '/user', 
        component: User,
        meta: {
            title: '用户'
        }
    }
]

const app = new VueRouter({
    router,
    mode: 'history'
})

// 前置守卫(guard)
router.beforeEach((to, from, next) => {
    // 从from跳转到to
    window.document.title = to.matched[0].meta.title;
    next();
})

export default router

  

 

posted @ 2022-05-13 21:31  PanTi  阅读(38)  评论(0)    收藏  举报