Vue.js--导航守卫

我就是我 2021-08-24 15:09 502阅读 0赞

导航守卫

  • vue-router提供的导航守卫主要用来监听路由的进入和离开的。
  • vue-router提供了beforeEach和afterEach,他们会在路由即将改变和改变前后触发。

示例

在路由跳转的同时,修改页面标题。

  1. //引入Vue
  2. import Vue from 'vue'
  3. //引入vue-router
  4. import VueRouter from 'vue-router'
  5. //加载路由插件
  6. Vue.use(VueRouter)
  7. //创建一个数组来指定路由匹配列表,每一个路由映射一个组件
  8. const routes = [
  9. {
  10. path: '/index',
  11. //这种写法webpack会把每一个路由打包成一个js文件,实现懒加载也防止main.js文件过大
  12. component: () => import('../components/index.vue'),
  13. meta: {
  14. title: '首页'
  15. }
  16. },
  17. {
  18. path: '/about',
  19. component: () => import('../components/about.vue'),
  20. meta: {
  21. title: '关于'
  22. }
  23. },
  24. {
  25. path: '/user/:id',
  26. component: () => import('../components/user.vue'),
  27. meta: {
  28. title: '个人主页'
  29. }
  30. }
  31. ]
  32. //创建路由对象
  33. const router = new VueRouter({
  34. //使用HTML5的history模式
  35. mode: 'history',
  36. routes
  37. })
  38. //通过导航钩子设置导航守卫
  39. router.beforeEach((to, from, next) => {
  40. next()
  41. document.title = to.meta.title;
  42. })
  43. //将router对象导出
  44. export default router

导航钩子有3个参数:

  • to:即将要进入的目标的路由对象;
  • from:当前导航即将要离开的路由对象;
  • next:调用该方法后,才能进入下一个钩子;

路由列表的meta字段可以自定义一些信息,beforeEach钩子可以从路由对象to里获取meta信息,从而改变标题。

next()方法可以设置参数,当参数为false时,可以取消导航;参数也可以是一个路径,使路由跳转到指定页面。

运行项目:
点击标签,标题随路由的跳转切换:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,502人围观)

还没有评论,来说两句吧...

相关阅读

    相关 VUE导航守卫

    为了阻止非法用户对受限资源的访问,Web服务器通过过滤器和拦截器,进行客户端请求的拦截。在身份验证通过后,才能继续访问目标资源,否则跳转登录或错误页面。 但是,这种方式只能限

    相关 vue 路由--- 导航守卫

    个人理解:路由跳转是一个大的过程,就跟组件的创建一样,不是涉及组件的创建 -- 销毁,那么路由的跳转也同样涉及到这个过程。(对接springmvc里面的拦截器,spring的a

    相关 vue之导航守卫,vuex

    vue之导航守卫 首先在这里说明一下导航守卫是个什么东西 其实就好比一个门卫你带有工作证我就让你进去,没有的话就不让你进去,常用于登录购物车之类需要用户信息的页面