纯小白入手 vue3.0 CLI - 3.3 - 路由的导航守卫
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html
尽量把纷繁的知识,肢解重组成为可以堆砌的知识。
学会工具并不难,思考如何运用这些工具,才是编程或者工作中最难的部分。
我的 github 地址 - vue3.0Study - 阶段学习成果都会建立分支。
==========================
导航守卫是 vue 中很关键的内容之一。路由是否能够切换,怎么切换,都由它来把关 ( 用它来把关,可以使得程序架构脉络清晰 )。注:路由的切换实际也可以用 router.push 这个方法来进行控制,但是会使得应用变得难以维护。
导航守卫
vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。
官网的定义的理解:
1、守卫导航是什么意思?
路由切换是指切换渲染内容,对于有些程序来说,比如后台具有权限管理的系统来说,有些组件只对某些权限的用户开放。没有权限的用户想要导航到这个组件的路由,是不被许可的。这就是守卫导航。
2、跳转和取消的方式。
有些路由经过导航守卫程序过滤之后,不能被渲染,那就需要告诉程序下一步的流程。
取消路由导航是一般的做法。跳转则是比较特殊的做法。
全局守卫
const router = new Router({ routes: [{
path: '/',
name: 'home',
component: Home
}, {
path: '/form',
name: 'forms',
component: Forms
}, {
path: '/about/:id',
name: 'about',
// 路由级别的代码分离 (懒加载组件)
// 下列代码会生成一个 (about.[hash].js) 分离代码包
// 并在当前路由激活时才加载该组件
component: () => import('./views/About.vue'),
children: [{
path: '1',
component: HelloWorld,
props: (router) => ({ msg: router.query.msg })
}]
}] })
router.beforeEach((to, from, next) => {
console.log(to, from)
next()
})
全局路由导航守卫 ( 上述红色部分 ),to 和 from 都是路由实例。
next() 必须调用,没有这个 next() 有什么后果注释掉便一清二楚 ( 整个 vue 应用宕机 )。
next(false) 中断当前的导航
next('/') 跳转到一个不同的地址
next(error) 导航会被终止且该错误会被传递给 router.onError() 注册过的回调。
还有 router.beforeResolve 与 router.beforeEach 类似。
局部守卫
path: '/',
name: 'home',
component: Home,
beforeEnter: (to, from, next) => {
console.log('路由-前置-钩子')
next()
}
参数和功能与全局的一样。
组件内守卫
beforeRouteEnter (to,from,next) {
console.log('组件-前置-钩子')
next()
},
beforeRouteUpdate (to,from,next) {
console.log('组件-复用-钩子')
next()
},
beforeRouteLeave (to,from,next) {
console.log('组件-离开-钩子')
next()
}
完整的导航解析流程
- 导航被触发。
- 在失活的组件里调用离开守卫。
- 调用全局的
beforeEach守卫。 - 在重用的组件里调用
beforeRouteUpdate守卫 (2.2+)。 - 在路由配置里调用
beforeEnter。 - 解析异步路由组件。
- 在被激活的组件里调用
beforeRouteEnter。 - 调用全局的
beforeResolve守卫 (2.5+)。 - 导航被确认。
- 调用全局的
afterEach钩子。 - 触发 DOM 更新。
- 用创建好的实例调用
beforeRouteEnter守卫中传给next的回调函数。
==========================
路由还有 路由元信息 过渡动效 数据获取 滚动行为 路由懒加载 等内容,由于并不复杂,官方教程讲等很详细,在此便不再介绍。
关于路由初级学习便到此为止。
到目前位置已经学会 路由和组件,实际上已经可以写出来不太复杂的 vue 应用,比如博客,数据库管理系统等。
到后面我就来写一个数据库管理系统 ( 其中涉及后台 koa2 的应用,请自行学习 )。
纯小白入手 vue3.0 CLI - 3.3 - 路由的导航守卫的更多相关文章
- 纯小白入手 vue3.0 CLI - 3.2 - 路由的初级使用
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...
- 纯小白入手 vue3.0 CLI - 3.1 - 路由 ( router )
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...
- 纯小白入手 vue3.0 CLI - 2.7 - 组件之间的数据流
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...
- 纯小白入手 vue3.0 CLI - 2.6 - 组件的复用
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- 纯小白入手 vue3.0 CLI - 2.5 - 了解组件的三维
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- 纯小白入手 vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- 纯小白入手 vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- 纯小白入手 vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- 纯小白入手 vue3.0 CLI - 2.1 - 组件 ( component )
vue3.0 CLI 真小白入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0Study ...
随机推荐
- 《JavaScript面向对象编程指南》读书笔记②
概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的 ...
- Java学习笔记33(集合框架七:Collections工具类)
数组有工具类,方面操作数组 集合也有工具类:Collections 常用方法示例: package demo; import java.util.ArrayList; import java.util ...
- ElasticSearch权威指南学习(分布式搜索)
查询阶段 在初始化查询阶段(query phase),查询被向索引中的每个分片副本(原本或副本)广播. 每个分片在本地执行搜索并且建立了匹配document的优先队列(priority queue). ...
- harbor镜像仓库-02-https访问配置
harbor镜像仓库-02-https访问配置 harbordockerhttps harbor搭建部署参考上一章节 harbor镜像仓库-01-搭建部署 Harbor默认使用http,给harbor ...
- MySQL:binlog 和 redo log
[参考文章]:MySQL中Redo与Binlog顺序一致性问题? [参考文章]:极客时间 1. 数据更新时的日志处理流程 1.1 redo log(prepare状态) 此时SQL已经成功执行了,已经 ...
- 使用node.js + json-server + mock.js 搭建本地开发mock数据服务
在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的.所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要的.对比过多种mock工具后,我最终选择了使用 json se ...
- Linux中vim文本编辑器的介绍和使用方法
vim主要模式介绍,vim命令模式. 确保系统已经安装了VIM工具 [root@panda ~]# rpm -qf `which vim` [root@panda ~]# rpm -qf `which ...
- Oracle的数据并发与一致性详解(上)
今天想了解下oracle中事务与锁的原理,但百度了半天,发现网上介绍的内容要么太短,要么版本太旧,而且抄袭现象严重,所以干脆查官方帮助文档(oracle 11.2),并将其精华整理成中文,供大家一起学 ...
- 数据库新秀 postgresql vs mongo 性能PK
前几天看了一篇文章<High Performance JSON PostgreSQL vs. MongoDB> 发布在Percona Live Europe 2017 作者是<Dom ...
- Deep learning with Python 学习笔记(8)
Keras 函数式编程 利用 Keras 函数式 API,你可以构建类图(graph-like)模型.在不同的输入之间共享某一层,并且还可以像使用 Python 函数一样使用 Keras 模型.Ker ...