Vue | 路由守卫面试常考
前言
最近在整理基础,欢迎掘友们一起交流学习
结尾有彩蛋哦!
Vue Router 路由守卫
导图目录
- 路由守卫分类
- 全局路由守卫
- 单个路由守卫
- 组件路由守卫
- 路由守卫执行的完整过程
路由守卫分类
- 全局路由
- 单个路由独享
- 组件内部路由
每个路由守卫的钩子函数都有 3 个参数:
to: 进入的目标路由
from: 离开的路由
next: 控制路由 在跳转时进行的操作,一定要执行。它有 4 个行为:
next(): 钩子都执行完了,进入到下一个路由当中。
next(false): 中断路由进入下一个路由。
next('/'): 根据你路由跳转判断条件来进入对应的路由,/为路由的path。
next(new Error): 中断路由跳转,错误会被传递给router.onError()注册过的回调。
全局路由守卫
beforeEach(to,from, next)beforeResolve(to,from, next)afterEach(to,from)全局路由直接挂载到
router实例上。
//全局验证路由
const router = createRouter({
history: createWebHashHistory(),
routes
});
// 白名单, 不需要验证的路由
const whiteList = ['/','/register']
router.beforeEach((to,from,next)=>{
if(whiteList.indexOf(to.path) === 0) {
// 放行,进入下一个路由
next()
} else if(!(sessionStorage.getItem('token'))){
next('/');
} else {
next()
}
})
beforeEach
使用场景
路由跳转前触发
作用
常用于登录验证
beforeResolve
使用场景
在 beforeEach 和 组件内beforeRouteEnter 之后,afterEach之前调用。
afterEach
使用场景
- 发生在beforeEach和beforeResolve之后,beforeRouteEnter之前。
- 路由在触发后执行
单个路由独享
它只有一个 钩子函数,
beforeEnter(to,from,next)
beforeEnter
使用场景
在beforeEach之后执行,和它功能一样 ,不怎么常用
{
path:'/superior',
component: Superior,
meta:{
icon:'el-icon-s-check',
title:'上级文件'
},
beforeEnter:(to,form,next) =>{
}
}
组件路由守卫
特点:
组件内执行的钩子函数
钩子函数:
beforeRouteEnter(to,from,next)beforeRouteUpdate(to,from,next)beforeRouteLeave(to,from,next)
beforeRouteEnter
使用场景:
- 路由进入之前调用。
- 不能获取组件
this实例 ,因为路由在进入组件之前,组件实例还没有被创建。执行顺序
beforeEach和独享守卫beforeEnter之后,全局beforeResolve和全局afterEach之前调用.
beforeRouteUpdate
使用场景:
- 在当前路由改变时,并且该组件被复用时调用,可以通过this访问实例。
- 当前路由query变更时,该守卫会被调用。
beforeRouteLeave
使用场景:
导航离开该组件的对应路由时调用,可以访问组件实例this
路由守卫执行的完整过程
- 导航被触发
- 执行 组件内部路由守卫:
beforeRouteLeave- 执行 全局路由守卫
beforeEach- 在重用组件内部路由守卫钩子
beforeRouteUpdate- 执行 路由中的钩子
beforeEnter- 在被激活的组件里调用 beforeRouteEnter
- 执行 全局的 beforeResolve 守卫 。
- 执行 全局的 afterEach 钩子
- beforeCreate
- created
- beforeMount
- mounted
- 执行 beforeRouteEnter的next的回调 ,创建好的组件实例会作为回调函数的参数传入。
结语
️关注+点赞+收藏+评论+转发️,原创不易,鼓励笔者创作更好的文章
关注公众号 “前端自学社区”,即可获取更多前端高质量文章!
关注后回复关键词“加群”, 即可加入 “前端自学交流群”,共同学习进步。
关注后添加我微信拉你进技术交流群
欢迎关注公众号,更多精彩文章只在公众号推送
Vue | 路由守卫面试常考的更多相关文章
- react router @4 和 vue路由 详解(八)vue路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 13.vue路由守卫 a.beforeEach 全局守卫 (每个路由调用前都会触发,根据 ...
- 前端面试常考知识点---CSS
前端面试常考知识点---js 1.CSS3的新特性有哪些 点我查看 CSS3选择器 . CSS3边框与圆角 CSS3圆角border-radius:属性值由两个参数值构成: value1 / valu ...
- PHP面试常考之会话控制
你好,是我琉忆,欢迎您来到PHP面试专栏.本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和网络 ...
- PHP面试常考内容之Memcache和Redis(2)
你好,是我琉忆.继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读.本周(2019.2-18至2-22) ...
- PHP面试常考内容之Memcache和Redis(1)
你好,是我琉忆.继上周(2019.2-11至2-15)发布的"PHP面试常考内容之面向对象"专题后,发布的第二个专题,感谢你的阅读.本周(2019.2-18至2-22)的文章内容点 ...
- PHP面试常考内容之面向对象(3)
PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(2)"发表后,今天更新面向对象的最后一篇(3).需要(1),(2 ...
- PHP面试常考内容之面向对象(2)
PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(1)"发表后,今天更新(2),需要(1)的可以直接点击文字进行跳 ...
- PHP面试常考内容之面向对象(1)
PHP中面向对象常考的知识点有以下几点,我将会从以下几点进行详细介绍说明,帮助你更好的应对PHP面试常考的面向对象相关的知识点和考题. 整个面向对象文章的结构涉及的内容模块有: 一.面向对象与面向过程 ...
- vue路由守卫用于登录验证权限拦截
vue路由守卫用于登录验证权限拦截 vue路由守卫 - 全局(router.beforeEach((to, from, next) =>来判断登录和路由跳转状态) 主要方法: to:进入到哪个路 ...
随机推荐
- Python判断身份证是否合法
利用正则表达式实现对身份证合法程度的判断 1 # !usr/bin/env python3 2 # coding:utf-8 3 """ 4 @ Copyright (c ...
- pyqt安装
一.安装PyQt5 pip install PyQt5 二.安装PyQt-tools pip install PyQt-tools *注:mac不需要安装PyQt-tools,能够正常使用,只支持Wi ...
- Mysql索引数据结构为什么是B+树?
目录 Mysql索引数据结构 二叉树 红黑树 B-Tree B+Tree Mysql索引数据结构 下面列举了常见的数据结构 二叉树 红黑树 Hash表 B-Tree(B树) Select * from ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- CVPR 2020目标跟踪多篇开源论文(下)
CVPR 2020目标跟踪多篇开源论文(下) 6. Cooling-Shrinking Attack: Blinding the Tracker with Imperceptible Noises 作 ...
- Win10 下python_appium的Android手机自动化环境搭建
前提: 已经安装好了Java环境,且配置了环境变量 已经安装python3.8.2,已经安装pycham. 一.安装appium_client ,pycham中也需要安装 二.安装node.js(需要 ...
- C语言指针间接引用
int a = 10; //普通变量 int *p = &a; //一级指针.是变量的地址. int **pp = &p; //二级指针.是一级指针的地址. int ***ppp = ...
- 【逆向实战】恶意勒索软件分析_披着羊皮的狼_被注入恶意代码的apk
/文章作者:Kali_MG1937 QQ:3496925334 CNBLOG博客号:ALDYS4/ 今天逛某论坛的时候发现了一篇求助贴 有意思,好久没分析过恶意软件了 今天就拿它来练练手 反编译工具 ...
- 【NX二次开发】获取面的类型 UF_MODL_ask_face_type
源码: extern DllExport void ufsta(char *param, int *returnCode, int rlen) { UF_initialize(); int face_ ...
- Django基础之cookie与session
cookie与session 由来及简介 HTTP协议四大特性 1.基于请求响应 2.基于TCP.IP作用于应用层之上 3.无连接 4.无状态 基于HTTP协议的通信无法记录客户端状态 但是现在很多软 ...