过滤器与拦截器

拦截器是lighting框架的一种路由过滤机制,和内置事件不同的是:拦截器具有阻断能力!

拦截器API一般使用的场景主要有一下的几个方面:

  1. 登录会话校验
  2. 路由权限校验
  3. 视图数据注入

先来看一下简单的例子:

Light.filter("view",function (from,to,next) {
console.log("view changed")
next();
})
Light.filter("start",function (next) {
console.log("start")
next();
})

其中filter为拦截器注册的API,其接受两个入参:

  1. type,拦截器的类型,现阶段支持两种:view/start,view是视图拦截器,start是启动拦截器。
  2. cb,拦截处理函数,视图拦截器的处理函数接受三个入参,分别是:上一个视图/目标视图/处理成功的回调,而启动拦截器只接受一个入参,处理成功的回调。

拦截器的处理机制是:当发生拦截行为的时候会调用用户定义的拦截器处理函数,如果处理函数处理成功并调用了next(),则继续处理下一个拦截器,直到拦截器链路中的处理函数都处理了此阶段,如果没有拦截器处理失败(也就是都执行了next)则正常发生路由行为,否则中断!

拦截器的注册时机

对start/view的拦截器注册应该在Light.start之前。