广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中路由守卫的具体使用
  • 205
分享到

Vue中路由守卫的具体使用

2024-04-02 19:04:59 205人浏览 泡泡鱼
摘要

目录1.全局守卫1.1 全局前置守卫1.2 全局后置路由守卫1.3 整合2. 路由独享的守卫3.组件内的守卫作用:对路由进行权限控制 分类:全局守卫、独享守卫、组件内守卫 1.全局守

作用:对路由进行权限控制

分类:全局守卫、独享守卫、组件内守卫

1.全局守卫

1.1 全局前置守卫

顾名思义,前置守卫主要是在你进行路由跳转之前根据你的状态去 进行一系列操作(全局前置是为在路由初始化以及跳转之前都会触发)

你可以使用router.beforeEach注册一个全局前置守卫(Each:每个,即在任意一个路由跳转的时候都会触发)

每个守卫方法接收三个参数:

to:Route:即将进入目标的路由对象

from:Route:当前导航正要离开的路由

next:function:一定要调用该方法来resolve这个钩子。执行效果依赖next方法的调用参数

1. next():进行管道中的额下一个钩子(to)。如果钩子执行完了,则导航状态就是confirmed(确认的)

2. next(false):中断当前的导航。如果浏览器的URL改变了(可能用户手动或者浏览器按后退按钮),那么地址会重置到from路由对应的地址。

3.next('/")或者next( { path: '/' } ):跳转到一个同的地址。当前的导航被中断,然后进行下一个新的导航。你可以想next传递任意对象,且允许设置诸如replace:true、name:'home‘ 之类的选项以及任何用下router-link的 to prop或者router.push中的选项

确保next函数在任何给定的导航守卫中被严格调用一次,它可以出现多余一次,但是只能在所有的逻辑路径都不重叠的情况下,否则钩子永远都不会被解析或者错误。

1.1.1 使用

可以打印出from、to、next看他们究竟会保存那些信息

举例


import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import News from '../views/News.vue'
import Message from '../views/Message.vue'
 
Vue.use(VueRouter)
 
const routes = [{
    path: '/home',
    name: 'Home',
    component: Home,
    children:[
      {
        path: 'message', //此处不要写成:/news
        component: Message
      }
    ]
  },
  {
    path: '/about',
    name: 'aboutName',
    component: About,
    children: [{ //通过children配置子级路由
      path: 'news', //此处不要写成:/news
      component: News
    }]
  }
]
 
const router = new VueRouter({
  routes
})
 
//全局前置路由守卫---初始化的时候被调用、每次路由切换的时候被调用
router.beforeEach((to, from, next) => {
  console.log(to);
  //这里是一个简单的例子
  //即判断用户是否进入了需要鉴权的路由下(这里距离为news和message)
  if (to.path == '/home/message' || to.path === '/about/news') {
    //如果进入了,那就判断本地是否缓存了信息(这里模拟登录的token)
    if (localStorage.getItem('name') === 'haungzhizhen') {
      next()
    }
  }else{
    //如果不是,则直接放心即可
    next()
  }
})
export default router

上面这个例子有个不足之处是,当需要鉴权的路由很多的时候,那你需要一个一个的去判断?那大可不必,因此这里引入路由的另一属性,即meta,可以在每个路由中进行配置,一般用来标识具有标识性的属性,可以用力啊同意判断,具体如下:


//使用meta
router.beforeEach((to, from, next) => {
  console.log(to);
  if (to.meta.isAuth) {//判断是否需要鉴权
    if (localStorage.getItem('name') === 'haungzhizhen') {
      next()
    }
  } else {
    next()
  }
})

1.2 全局后置路由守卫


//全局后置路由守卫---初始化的时候被调用、每次路由切换之后被调用
router.afterEach((to, from) => {
  if (to.meta.title) {
    document.title = to.meta.title || '路由跳转举例'//修改网页的title
  }else{
    document.title = 'vue_test'
  }
})

1.3 整合

2. 路由独享的守卫

你可以在路由配置直接定义beforeEnter守卫,这些参数与全局前置守卫的方法参数是一样的


const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})

3.组件内的守卫

最后,你可以在路由组件内直接定义一下路由导航守卫:

  • beforeRouterEnter
  • beforeRouterUpdate
  • beforeRouterLeave

const Foo = {
  template: `...`,
  beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当守卫执行前,组件实例还没被创建
  },
  beforeRouteUpdate(to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave(to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
}

到此这篇关于Vue中路由守卫的具体使用的文章就介绍到这了,更多相关Vue 路由守卫内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue中路由守卫的具体使用

本文链接: https://www.lsjlt.com/news/159119.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中路由守卫的具体使用
    目录1.全局守卫1.1 全局前置守卫1.2 全局后置路由守卫1.3 整合2. 路由独享的守卫3.组件内的守卫作用:对路由进行权限控制 分类:全局守卫、独享守卫、组件内守卫 1.全局守...
    99+
    2022-11-12
  • Vue中路由守卫怎么用
    小编给大家分享一下Vue中路由守卫怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.全局守卫1.1 全局前置守卫顾名思义,前置守卫主要是在你进行路由跳转之前根据你的状态去 进行一系列操作(全局前置是为在路由初始化以及...
    99+
    2023-06-21
  • vue全局路由守卫如何使用
    在vue中使用全局路由守卫的方法:1.新建项目,安装vue-router;2.引入vue和vue-router;3.使用Vue.use注册路由;4.定义和配置路由;5.执行代码使用全局路由守卫;具体步骤如下:首先,新建一个html项目,并在...
    99+
    2022-10-13
  • vue-router的路由守卫是什么
    这篇文章主要介绍“vue-router的路由守卫是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue-router的路由守卫是什么”文章能帮助大家解决问题。 ...
    99+
    2022-10-19
  • vue3中的路由守卫怎么使用
    这篇文章主要介绍“vue3中的路由守卫怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3中的路由守卫怎么使用”文章能帮助大家解决问题。路由守卫有哪几种?路由守卫(导航守卫)分为三种:全局...
    99+
    2023-07-06
  • Angular中路由守卫的使用示例
    这篇文章主要介绍了Angular中路由守卫的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、路由守卫当用户满足一定条件才被允许进入或者离开一个路由。路由守卫场景:只...
    99+
    2023-06-06
  • angular9中路由守卫的使用方法
    小编给大家分享一下angular9中路由守卫的使用方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!路由守卫是什么任何用户都能在任何时候导航到任何地方。但有时候出...
    99+
    2023-06-14
  • 详解Vue中的路由与多种守卫
    目录什么是路由呢?什么是路由守卫呢?1.vue-router2.什么是路由路由分类3.路由的基本使用4.多级路由5.路由传参1.params2.路由的props配置3.<rou...
    99+
    2023-02-02
    Vue路由守卫 Vue中的路由
  • Vue路由导航守卫的示例分析
    这篇文章将为大家详细讲解有关Vue路由导航守卫的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念:“导航”表示路由正在发生变化vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫...
    99+
    2023-06-22
  • Vue中的路由使用和多种守卫方法是什么
    今天小编给大家分享一下Vue中的路由使用和多种守卫方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.vue-rou...
    99+
    2023-07-05
  • vue3中7种路由守卫如何使用
    全局前置守卫1.使用方式:main.js中配置,在路由跳转前触发,这个钩子作用主要是用于登录验证,也就是路由还没跳转提前告知,以免跳转了再通知就为时已晚2.代码:router.beforeEach((to,from,next)=>{}...
    99+
    2023-05-14
    Vue3
  • 一文浅析Vue中的路由和多种守卫
    4.多级路由在配置路由规则的以及路由里面进行配置下一级路由使用children:[ { } ]这种形式 routes: [{ path: '/about', compon...
    99+
    2023-05-14
    Vue
  • Vue中的路由导航守卫导航解析流程
    目录全局前置守卫全局解析守卫全局后置钩子路由独享的守卫组件内的守卫可用的配置 API使用组合 API完整的导航解析流程正如其名,vue-router 提供的导航守卫主要用来通过跳转或...
    99+
    2023-05-16
    Vue路由导航守卫 Vue路由守卫
  • 使用vue-router钩子函数怎么实现路由守卫
    这篇文章给大家介绍使用vue-router钩子函数怎么实现路由守卫,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。全局钩子函数beforeEach:beforeEach一共接收三个参数,分别是to、from、next;t...
    99+
    2023-06-14
  • vue路由守卫的三种类型分别是什么
    这篇“vue路由守卫的三种类型分别是什么”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“vue路由守卫的三种类型分别是什么”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来...
    99+
    2023-06-06
  • vue的路由守卫和keep-alive后生命周期详解
    目录Vue-Router懒加载如何定义动态路由param方式query方式Vue-Router导航守卫全局路由钩子router.beforeEach路由独享守卫组件内的守卫befor...
    99+
    2022-11-13
  • vue的路由守卫和keep-alive后生命周期是什么
    本文小编为大家详细介绍“vue的路由守卫和keep-alive后生命周期是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue的路由守卫和keep-alive后生命周期是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-29
  • vue的导航守卫怎么使用
    这篇文章主要讲解了“vue的导航守卫怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue的导航守卫怎么使用”吧! 导航守...
    99+
    2022-10-19
  • vue中的导航守卫使用及说明
    目录导航守卫全局守卫独享守卫组件内守卫vue导航守卫有哪些路由的钩子函数有六个全局路由钩子函数路由内的钩子函数组件内的钩子函数总结导航守卫 作用:对路由进行权限控制分类:全局守卫、独...
    99+
    2023-01-28
    vue导航守卫 导航守卫使用 导航守卫
  • vue-router的导航守卫怎么使用
    这篇文章主要介绍了vue-router的导航守卫怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue-router的导航守卫怎么使用文章都会有所收获,下面我们一起来看看吧。前言在浏览器中点击链接实现导航...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作