一、函数的识别:

1、router.beforeEach:主函数、高阶函数、入口函数;

2、匿名参量函数:处理跳转过程中的附加逻辑

(to, from, next) => {

if (to.matched.some(record => record.meta.requiresAuth)) {

// this route requires auth, check if logged in

// if not, redirect to login page.

if (!auth.loggedIn()) {

next({

path: '/login',

query: { redirect: to.fullPath }

})

} else {

next()

}

} else {

next() // 确保一定要调用 next()

}

}

3、next函数:不定参量函数

根据匿名函数的处理结果决定跳转策略;

由router.beforeEach定义并传给匿名函数。

4、关系

router.beforeEach创建next;

router.beforeEach引用(to, from, next) =>void

(to, from, next) =>void引用next;

5、二阶段高阶函数

高阶函数分为两个阶段

二、路由元信息、导航守卫

定义路由的时候可以配置 meta 字段:

const router = new VueRouter({

routes: [

{

path: '/foo',

component: Foo,

children: [

{

path: 'bar',

component: Bar,

// a meta field

meta: { requiresAuth: true }

}

]

}

]

})

那么如何访问这个 meta 字段呢?

首先,我们称呼 routes 配置中的每个路由对象为 路由记录。路由记录可以是嵌套的,因此,当一个路由匹配成功后,他可能匹配多个路由记录

例如,根据上面的路由配置,/foo/bar 这个 URL 将会匹配父路由记录以及子路由记录。

一个路由匹配到的所有路由记录会暴露为 $route 对象 (还有在导航守卫中的路由对象) 的 $route.matched 数组。因此,我们需要遍历 $route.matched 来检查路由记录中的 meta 字段。

下面例子展示在全局导航守卫中检查元字段:

router.beforeEach((to, from, next) => {

if (to.matched.some(record => record.meta.requiresAuth)) {

// this route requires auth, check if logged in

// if not, redirect to login page.

if (!auth.loggedIn()) {

next({

path: '/login',

query: { redirect: to.fullPath }

})

} else {

next()

}

} else {

next() // 确保一定要调用 next()

}

})

https://router.vuejs.org/zh/guide/advanced/meta.html

router.beforeEach、路由元信息、导航守卫与函数式编程的更多相关文章

  1. VueJs(12)---vue-router(导航守卫,路由元信息)

    vue-router(导航守卫,路由元信息) 之前泄露两篇有关vue-router博客: VueJs(10)---vue-router(进阶1) VueJs(11)---vue-router(进阶2) ...

  2. vue进阶:vue-router之导航守卫、路由元信息、路由懒加载

    1.导航被触发 2.在失活的组件里调用离开守卫:beforeRouteLeave —— 组件内守卫(离开组件). 3.调用全局的beforeEach守卫 —— 全局守卫(进入组件). 4.在重用组件里 ...

  3. vue-router路由元信息详解

    一.官方文档 路由元信息:定义路由的时候可以配置 meta 字段 const router = new VueRouter({ routes: [ { path: '/foo', component: ...

  4. vue-router之路由元信息

    路由元信息?(黑人问号脸???)是不是这么官方的解释很多人都会一脸懵?那么我们说meta,是不是很多人恍然大悟,因为在项目中用到或者看到过呢? 是的,路由元信息就是我们定义路由时配置的meta字段:那 ...

  5. vue-router路由元信息及keep-alive组件级缓存

    路由元信息?(黑人问号脸???)是不是这么官方的解释很多人都会一脸懵?那么我们说meta,是不是很多人恍然大悟,因为在项目中用到或者看到过呢? 是的,路由元信息就是我们定义路由时配置的meta字段:那 ...

  6. vue-router 路由元信息 终于搞明白了路由元信息是个啥了

    vue-router 路由元信息:https://blog.csdn.net/wenyun_kang/article/details/70987840 终于搞明白了路由元信息是个啥了:https:// ...

  7. vue 路由元信息

    官方文档:路由meta元信息 前言: 在设置面包屑导航还有菜单栏的时候,路由的meta字段可以自定义我们需要的信息,然后路由跳转的时候,提供我们判断条件 文档: 定义路由的时候可以配置 meta 字段 ...

  8. Vue-admin工作整理(六):路由元信息

    路由源信息:每一个路由对象,可以配置一个meta字段,它里面可以存放一些我们定义的信息,比如说页面是否需要一个权限 to.meta && setTitle(to.meta.title) ...

  9. 26、router.beforeEach路由拦截

    为了防止用户未登录直接修改路径来访问页面,解决办法: 在main.js文件中加入以下代码: // 路由拦截 router.beforeEach((to, from, next) => { if ...

随机推荐

  1. SQL系列(十三)—— 关于表的DDL

    前面的文章一直都在讲述关于DML方面的SQL Statement.这篇文章来说说表方面的DDL: CREATE 创建表 ALTER 修改表 DROP 删除表 CREATE 1.语法 CREATE TA ...

  2. tf.random_shuffle()函数解析

    tf.random_shuffle(value, seed=None, name=None) 函数就是随机地将张量沿第一维度打乱 value:将被打乱的张量. seed:一个 Python 整数.用于 ...

  3. 2019 第一视频java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.第一视频等公司offer,岗位是Java后端开发,因为发展原因最终选择去了第一视频,入职一年时间了,也成为了面 ...

  4. Java自学-类和对象 单例模式

    Java的饿汉式与懒汉式单例模式 LOL里有一个怪叫大龙GiantDragon,只有一只,所以该类,只能被实例化一次 步骤 1 : 单例模式 单例模式又叫做 Singleton模式,指的是一个类,在一 ...

  5. django配置文件

    1.BASSE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 当前工程的根目录,Django会依 ...

  6. Vue学习之品牌案例部分代码小结(二)

    品牌案例的增删查和其他部分效果: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  7. React学习笔记②

    import React,{Component} from 'react'; import Child from './Child.js' class App extends Component{ c ...

  8. consul:kv

    consul除了提供了服务发现的功能,还是提供了kv store的功能,kv store可用于动态配置服务.协调服务.leader选举等场景. consul的kv提供了cli和http的两种接口: h ...

  9. 一步一步从PostgreSQL安装到delphi 访问

    今天,我们使用ubuntu 19 来安装PostgreSQL. 1.直接使用包安装 sudo apt-get install postgresql 按Y,直接安装. 安装完毕. 初次安装后,默认生成一 ...

  10. js修改页面标题 title

    如果对你有帮助的话麻烦点个[推荐]~最好还可以follow一下我的GitHub~感谢观看! /* * *添加首页description元数据meta标签 *创建一个meta元素,sName为该meta ...