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()
}

完整的导航解析流程

  1. 导航被触发。
  2. 在失活的组件里调用离开守卫。
  3. 调用全局的 beforeEach 守卫。
  4. 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。
  5. 在路由配置里调用 beforeEnter
  6. 解析异步路由组件。
  7. 在被激活的组件里调用 beforeRouteEnter
  8. 调用全局的 beforeResolve 守卫 (2.5+)。
  9. 导航被确认。
  10. 调用全局的 afterEach 钩子。
  11. 触发 DOM 更新。
  12. 用创建好的实例调用 beforeRouteEnter 守卫中传给 next 的回调函数。

==========================

路由还有 路由元信息 过渡动效 数据获取 滚动行为 路由懒加载 等内容,由于并不复杂,官方教程讲等很详细,在此便不再介绍。

关于路由初级学习便到此为止。

到目前位置已经学会 路由和组件,实际上已经可以写出来不太复杂的 vue 应用,比如博客,数据库管理系统等。

到后面我就来写一个数据库管理系统 ( 其中涉及后台 koa2 的应用,请自行学习 )。

纯小白入手 vue3.0 CLI - 3.3 - 路由的导航守卫的更多相关文章

  1. 纯小白入手 vue3.0 CLI - 3.2 - 路由的初级使用

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...

  2. 纯小白入手 vue3.0 CLI - 3.1 - 路由 ( router )

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...

  3. 纯小白入手 vue3.0 CLI - 2.7 - 组件之间的数据流

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 尽量把纷繁的知识,肢解重组成为可以堆砌的知识. ...

  4. 纯小白入手 vue3.0 CLI - 2.6 - 组件的复用

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  5. 纯小白入手 vue3.0 CLI - 2.5 - 了解组件的三维

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  6. 纯小白入手 vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  7. 纯小白入手 vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  8. 纯小白入手 vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  9. 纯小白入手 vue3.0 CLI - 2.1 - 组件 ( component )

    vue3.0 CLI 真小白入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0Study  ...

随机推荐

  1. 2017CS231n学习笔记——计算机视觉的概述

    本节课主要讲述了cs231n课程的背景和计算机视觉的历史,也主要介绍了目前很重要的一个计算机视觉数据集--IMAGENET. 更多内容参考我的AI学习之路 课程简介 这门课程是由stanford大学计 ...

  2. Android数据存储之SharedPreferences使用

    SharedPreferences是Android中一种轻型的数据存储类.本质上是基于XML文件进行存储Key-Value键值对的数据,生成的XML文件的目录在/data/data/包名/Shared ...

  3. 测试工具之badboy

    badboy这个工具本身用处不是很大,但有个录制脚本的功能,还是jmeter脚本,所以针对这一点很多懒人就可以通过这个录制脚本,而不需要自己去编写 badboy工具最近还是2016年更新的,后面也没在 ...

  4. Xamarin.Android 使用 Encoding.GetEncoding("GB2312") 报错解决方案

    问题描述:使用byte转换成汉字编码格式,debug模式下可以正常运行,但是release模式下就会出现死机问题. 排除过程:最开始不知道是编码格式转换错误,于是把相关代码块注释掉,然后进行relea ...

  5. 如何从GitHub仓库clone项目

    自己也已经多次接触了git了,但是因为工作用svn,自己平时也很少用git,所以每次都是用的时候可能还可以,等过一段时间再来用的时候,就又忘得差不多了,所以索性自己写个博客,自己记得自己也好懂,而且熟 ...

  6. php几种常见排序算法

    <?php //从时间上来看,快速排序和归并排序在时间上比较有优势,//但是也比不上sort排序,归并排序比较占用内存! $arr = [4,6,1,2,3,89,56,34,56,23,65] ...

  7. 程序员、互联网从业者必读KK凯文凯利三大力作之《失控》总结

  8. SpringBoot各类扩展点详解

    一.前言 上篇文章我们深入分析了SpringBoot的一站式启动流程.然后我们知道SpringBoot的主要功能都是依靠它内部很多的扩展点来完成的,那毋容置疑,这些扩展点是我们应该深入了解的,那么本次 ...

  9. [java核心技术01]__继承与多态、重载与重写、抽象类与接口

    前言 前面简单学习了面向对象的知识,知道了其两个重要的特性,继承与多态,今天就围绕着面向对象的这两个特性,将继承与多态及相关的几个几个定义重载与重写,抽象类与接口的相关知识具体学习一下. 类的继承 关 ...

  10. find 命令参数大全

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...