express 路由管理,通过 app.express();  app.METHOD(path,fn(req, res)的方式进行路由的配置。实现了请求的接口的路由的拆分。那么可以将路由配置,分发到不同的文件中,进行分类管理。非常的nice。那么单个接口的能不能拆分更小的粒度尽心管理呢,答案是可以的。那就是中间件的方式。

express在路由函数回调函数中进行中间件处理的方式是依赖于,回调函数的第三个参数next ,如下:

app.get('/',function(req, res,next){

// 逻辑1 比如数据的初步处理

next() // 调用next() 执行下一个回调函数

if(property1)  {// 进行一些处理}   //  可以利用后面中间件的一些状态通过res或者req穿出。

// 挂载参数部分  req.property = property;

},function(req, res,next){

// 逻辑2 比如数据的一些判断之后的逻辑

next()

},function(req, res,next){

// 逻辑3 必须结果处理的一些逻辑

// 得出的property1状态,如果会影响上面的一个中间件的话 ,可以将property1挂载在res上,在上面的中间件函数中可以访问的到

res.property1 = property1 ;

})

上述例子给了一个大致的利用中间件,对业务逻辑进行划分的思路,实际情况可以自己来划分。将这些逻辑代码划分在多个函数中之后,那么久可以对复杂的逻辑

放在不同的文件中进行单独处理。 需要的时候,然后require进来。更好的定位错误,和管理项目。

但是特别要注意的是!!! ,这里没一个函数代码中的 ,一些特殊参数,如上列子中,的proerpry不能够再直接在后面的中间件中访问到,需要挂载到req或者res上

通过res.property 进行访问。

并且!!!!!!!!   ,这里的所有next之后的回调函数,并非是一直向下的,什么意思,express中间件是一个横向的洋葱模型,大家想象一下,拿一根很长的针,从洋葱的左侧,经过一层一层的外皮内部之后,又经过一层一层的外皮到达洋葱的另一端。

就是数据或逻辑的处理,是可以穿入和传出的。并非是下面的回到函数,一直接收上面回调函数的影响结果。也可以在下面的回调函数中,创建状态丢给上面的中间件进行判断和处理的。而这个还是依赖于req,res。比如上面的  property1属性的挂载。

在打一个通俗的彼方,有3个朋友一起做火车出行。他们各自有一包东西,过安检的时候,第一个包放上去,

,缓慢的通过机器进行检查。通过第一个包时,发现里面有瓶酒精,(他们准备火车上煮火锅)机器发出了警报,民警提示不能够带酒精上火车。

后面两位朋友,默默的把自己包里的酒精拿了出来。(看来是一顿大火锅)第三个包通过后,机器提示安全通过,第一个朋友忽然意识到,没道理啊,

我明明塞了一捆鞭炮放在第三个朋友包里,怎么机器没有报警。这些通过机器没有报警这么一个状态,第一个朋友知道了,第三个朋友早就知道鞭炮不能上火车,没有带鞭炮了。(他准备吃火锅之间,放鞭炮庆祝的)

在上面的模型中,这台安检机器 ,就是携带数据(背包和里面的东西)不断的通过检测,背包里的危险品被拿出。第一个包被检查出酒精,后面的朋友自觉的拿出了酒精

就是前面中间件对后面中间件的影响,而 第三个包检查完没有鞭炮是,他们知道了,第一个人知道了鞭炮没带,就是后面中间件对前面中间件的影响。

最新文章

  1. IIS 7.5 + PHP-5.6.3 + mysql-5.6.21.1
  2. 慕课网__css3__3D
  3. self dismissModalViewControllerAnimated:YES 无效(dismissviewcontrolleranimated无效)
  4. Linux环境下搭建Tomcat+mysql+jdk
  5. Python:字符编码详解
  6. Python: Lambda Functions
  7. 精通 JS正则表达式
  8. Android手机分辨率基础知识(DPI,DIP计算)
  9. 【转】Dubbo是Alibaba开源的分布式服务框架
  10. (Hibernate进阶)Hibernate搭建开发环境+简单实例(二)
  11. gridview 绑定方法中带参数
  12. 谈layout_gravity和gravity的用法
  13. Java Concurrency - ReentrantLock
  14. 深入浅出 Java Concurrency (3): 原子操作 part 2
  15. Spring 与 mybatis整合---事务管理
  16. “-webkit-font-smoothing”
  17. [原创]嵌入CEF遇到的问题及解决方案
  18. 利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包
  19. cxgrid属性说明,每次用的时候费时费力查找。
  20. JAVA 多线程(1):synchronized

热门文章

  1. 题解 CF51F 【Caterpillar】
  2. Spring Cloud Alibaba教程:Nacos
  3. Git 撤销更改
  4. Head First HTML与CSS(第2版)PDF高清完整版免费下载|百度云盘
  5. MySQL主从分离实现
  6. java基础(二)--main方法讲解
  7. Cobbler 部署
  8. 初识ES数据库
  9. 朝阳大妈也能听懂的git教程 (好人不谢)
  10. SQL数据库优化总结