拦截器是lighting框架的一种路由过滤机制,和内置事件不同的是:拦截器具有阻断能力!
拦截器一般的使用场景主要有以下的几个方面:
- 登录会话校验
- 路由权限校验
- 视图数据注入
先来看一下简单的例子:
import App from "light"; |
其中filter
为拦截器注册的API,接受两个入参:
- type,拦截器的类型,现阶段支持三种:
- start 启动拦截器
- route(view) 视图拦截器
- navigate 路由跳转拦截器,在调用
Light.navigate(viewId,params,options)
时触发
- cb,拦截处理函数,接受的入参各不相同:
- 启动拦截器:处理成功的回调
- 视图拦截器:上一个视图/目标视图/处理成功的回调
- 路由跳转拦截器:目标路由/路由参数/跳转参数/处理成功的回调
拦截器的处理机制是:当发生拦截行为的时候会调用用户定义的拦截器处理函数,如果处理函数处理成功并调用了next(),则继续处理下一个拦截器,直到拦截器链路中的处理函数都处理了此阶段;如果没有拦截器处理失败(也就是都执行了next()),则正常发生路由行为,否则中断!
拦截器的注册时机对拦截器的注册应该在
Light.start()
之前。