Vue-admin工作整理(五):守卫导航
一、作用:
它可以帮我们在路由发生跳转,到导航结束的时间内,做一些相应的逻辑处理,分为:全局守卫,和专项守卫
1、全局收尾:
(a)、前置守卫:router.beforeEach(to,from,next),router实例的beforeEach方法能够注册一个全局前置守卫,,用途例如做典型的登陆判断,to表示的是即将跳转的路由对象,from表示当前将要离开的路由对象,next是一个函数,如果确定要跳转,那么就将用到next函数
//如果即将访问的页面不是登录页面,如果已经登录,那么直接执行next 直接跳转
if (to.name !== 'login') {
if (HAS_LOGINED) next()
else next({ name: 'login' }) //如果没有登录,那么直接跳转到登录页面,组件name属性为login
} else {
if (HAS_LOGINED) next({ name: 'home' }) //如果跳转的是登录页面,并且已经是登录状态,那么直接跳转到首页
else next() //否则,放行,继续到登录页面
}
(b)、后置钩子:所有的页面跳转之后做一些操作,比如一个登录动作,当页面加载完毕后,加一个后置钩子,就可以将正在登录状态关闭掉
router.afterEach((to, from) => {
// logining = false
})
(c)、router.beforeResolve,也是一个全局守卫,它是在导航被确认(所有导航钩子结束)之前,所有组件内守卫和异步路由组件被解析之后调用,参数与router.beforeEach一样:(to,from,next)
(d)、路由独享守卫:beforeEnter(to, from, next)路由列表里配置
(e)、组件内守卫:每一个组件都有3个钩子
(1)、beforeRouteEnter(to, from, next),to代表当前路由对象,from表示上一个路由对象,渲染该组件对应路由被确认前调用,就是说页面被触发,已经确定调用页面,但页面还没有渲染的时候,所以this是获取不到当前组件的实例的
(2)、beforeRouteLeave(to, from, next), 比如页面进行了编辑,在用户要离开的时候,就需要提醒一下用户“编辑内容未保存,是否真的要离开”
beforeRouteLeave (to, from, next) {
const leave = confirm('您确定要离开吗?')
if (leave) next() //如果选择的是leave==确定离开 直接通过next函数跳转
else next(false) //否则,直接将函数设置为false,不做跳转
},
(3)、beforeRouteUpdate:路由(RUL)被发生变化,组件被复用的时候调用,一般是url第二次变化的时候出现的逻辑处理,此时页面已经渲染,所有使用this是可以访问到当前实例的(){}
总结:、beforeRouteUpdate、beforeRouteLeave因为已经访问到当前实例,因此可以用this,只有、beforeRouteEnter不可以,因为还未实现跳转,但可以在next里通过(vm => { console.log(vm) })回调函数来取当前实例
二、完整的导航解析流程:
1、导航触发
2、在失活的组件(即将离开的页面组件)里调用离开守卫:beforeRouteLeave
3、调用全局的前置守卫 beforeEach
4、在复用的组件里调用 beforeRouteUpdate || 不是复用组件就调用 beforeRouteEnter
5、调用路由独享守卫 beforeEnter(在路由列表里配置)
6、解析异步路由组件
7、在被激活的组件(即将进入的组件页面)里调用 beforeRouteEnter
8、调用全局的解析守卫 beforeResolve
9、导航被确认
10、调用全局的后置守卫 afterEach
11、触发DOM的渲染
12、用创建好的实例调用beforeRouteEnter守卫传给next的回调函数
Vue-admin工作整理(五):守卫导航的更多相关文章
- AntDesign vue学习笔记(五)导航菜单动态加载
一般的后台系统都有一个树形导航菜单,具体实现如下,主要参考https://my.oschina.net/u/4131669/blog/3048416 "menuList": [ { ...
- Vue的路由动态重定向和导航守卫
一.重定向 重定向也是通过 routes 配置来完成,下面例子是从 /a 重定向到 /b: const router = new VueRouter({ routes: [ { path: '/a', ...
- Vue-admin工作整理(二):项目结构个人配置
通过上一篇文章(Vue-admin工作整理(一):项目搭建)操作完毕后,基础项目已经搭建,下面就要对项目本身进行一下项目结构调整来符合自己的项目要求 1.首先要对package.json文件进行调整, ...
- vue路由知识整理
vue路由知识整理 对于单页应用,官方提供了vue-router进行路由跳转的处理.我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(compo ...
- [vue ]滚动视图解决ElementUI NavMenu 导航菜单过长显示的问题
记录一下工作 需求 导航菜单过长的时候会溢出,需要一个像 Tabs 标签页一样的滚动视图容器,可以左右滚动内部视图. 解决方法 由于时间问题,所以直接将 Tabs 源码抽取出来使用. 这里要做一些特殊 ...
- Vue Admin - 基于 Vue & Bulma 后台管理面板
Vue Admin 是一个基于 Vue 2.0 & Bulma 0.3 的后台管理面板(管理系统),相当于是 Vue 版本的 Bootstrap 管理系统,提供了一组通用的后台界面 UI 和组 ...
- 15:element/Vue Admin
1.1 简介 1.Vue Admin 简介 1. Vue Admin 是一个基于 Vue 2.0 & Bulma 0.3 的后台管理面板(管理系统),相当于是 Vue 版本的 Bootstra ...
- Vue技术点整理-前言
前言 Vue版本说明:本文档编写时,Vue稳定版本为 2.6.10 本文档编写目的为:整理Vue相关生态的技术点.和开发中经常使用到的技术点,让开发者快速上手开发,提升开发效率 一,Vue开发工具:本 ...
- 解决vue组件内前置路由守卫beforeRouteEnter无法获取上下文this
问题描述 vue框架,只有在报名页面报名成功,然后自动跳转到订单详情,才弹出一个引流弹窗,其他情况均不弹出,我就想到使用vue 的组件内前置守卫beforeRouteEnter来实现.beforeRo ...
- Vue基础系列(五)——Vue中的指令(中)
写在前面的话: 文章是个人学习过程中的总结,为方便以后回头在学习. 文章中会参考官方文档和其他的一些文章,示例均为亲自编写和实践,若有写的不对的地方欢迎大家和我一起交流. VUE基础系列目录 < ...
随机推荐
- @ResponseBody ResponseEntity
1.产生疑问 我们知道,如果在 Controller 的某个方法上加上 @ResponseBody 注解,那么你就能拿到 json 数据. 如果你只是知道这么用,那么你应该知道 ResponseBod ...
- MSSQL2008 数据库展开报错:值不能为空。 参数名: viewInfo (Microsoft.SqlServer.Management.SqlStudio.Explorer)
今天打开数据库,结果出现:值不能为空. 参数名: viewInfo (Microsoft.SqlServer.Management.SqlStudio.Explorer) 百度之后找到其中一种解决方案 ...
- XLSReadWriteII5使用参考
varxls: TXLSReadWriteII5 xls.Filename 文件名xls.Read 开始读取xls.Count sheet总数xls.Sheets[i].Name sheet名xls. ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 连接数据库执行SQL语句
BIML 101 - BIML 快速入门教程 第一节 连接数据库执行SQL语句 本小节将用BIML建一个简单的可以执行的包. 新建一个biml文件,贴入下面的代码 1 <Biml xmlns=& ...
- MATLAB多项式运算
序言 none 正文 1. 多项式的表示 在Matlab中,多项式用一个行向量表示, 行向量的元素值为多项式系数按幂次的降序排列, 如p(x)=x3-2x-5用P=[1,0,-2,-5]表示. 2. ...
- 做一个有产品思维的研发:Scrapy安装
每天10分钟,解决一个研发问题. 如果你想了解我在做什么,请看<做一个有产品思维的研发:课程大纲>传送门:https://www.cnblogs.com/hunttown/p/104909 ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(三)
1, 前面两篇文章我们知道了怎么使用常用的四种标签,现在我们结合我们自己的项目中去简单的使用 在我们搭建项目的时候,一般会创建自己的Application,在里面进行一些初始化如一些第三方的Green ...
- Django框架详细介绍---Admin后台管理
1.Admin组件使用 Django内集成了web管理工具,Django在启动过程中会执行setting.py文件,初始化Django内置组件.注册APP.添加环境变量等 # Application ...
- Excel坐标自动在AutoCad绘图_6
众所周知,Excel对数据处理的功能非常强大,它可以进行数据处理.统计分析已经辅助决策的操作,该软件已经渗透到各个领域.作为一个测绘人,GISer, 也经常利用excel完成一些测量表格的自动化计算, ...
- B/S的学习
一. B/S的概念 B/S(Brower/Server,浏览器/服务器)模式又称B/S结构,是Web兴起后的一种网络结构模式.Web浏览器是客户端最主要的应用软件. 这种模式统一了客户端,将系统功能实 ...