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个朋友一起做火车出行。他们各自有一包东西,过安检的时候,第一个包放上去,

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

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

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

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

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

express 洋葱模型 路由管理 中间件的更多相关文章

  1. express 框架之 路由与中间件

    1.  什么是router路径,什么是middleware? 我们输入www.baidu.com 来访问百度的主页,浏览器会自动转换为 http://www.baidu.com:80/(省略一些参数) ...

  2. nodejs开发 express路由与中间件

    路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议. host表示主机. port为端口,可选字段,不提供时默认为80. path指定请求资 ...

  3. 全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

    KOA2 是什么? Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 asyn ...

  4. NodeJS基础之Express路由和中间件

    路由 路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求. 路由是由一个 URI.HTTP 请求(GET.POST等)和若干个句柄组成,它的结构如下: app.method(path, [ ...

  5. express-18 路由

    简介 路由是网站或Web服务中最重要的一个方面:路由是将请求(由URL和HTTP方法指定)路由到处理它们的代码去的一种机制. 路由过去是基于文件的,这很简单,但不灵活. IA 是指内容的概念性组织.在 ...

  6. express 最佳实践(二):中间件

    express 最佳实践(二):中间件 第一篇 express 最佳实践(一):项目结构 express 中最重要的就是中间件了,可以说中间件组成了express,中间件就是 express 的核心. ...

  7. node.js之路由,中间件,ge请求和post请求的参数

    一.路由 1.什么是路由 服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤 2.实现路由的方法 2.1.get请求访问网址时,做什么事 1 app.get(" ...

  8. http协议、模块、express框架以及路由器、中间件和mysql模块

    一.http协议 是浏览器和web服务器之间的通信协议 1.通用头信息 request url:请求的url,向服务器请求的数据 request method:请求的方式   get.post sta ...

  9. 9. http协议_响应状态码_页面渲染流程_路由_中间件

    1. http协议 超文本传输协议 协议详细规定了 浏览器 和 万维网服务器 之间互相通信的规则 客户端与服务端通信时传输的内容我们称之为报文(请求报文.响应报文) 常见的发送 get 请求方式 在浏 ...

随机推荐

  1. SQL 给某字段添加汉字却显示??

    错误展示: 解决方案: 1.在要修改的数据库上单击鼠标右键,并选择“属性”.   2.在弹出的数据库属性窗口中点击“选择页”中的“选项”.   3.将排序规则由默认的SQL_Latin1_Genera ...

  2. 【bfs+链式向前星】防御僵尸(defend)计蒜客 - 45288

    题目: A 国有 n 座城市,n−1 条双向道路将这些城市连接了起来,任何两个城市都可以通过道路互通. 某日,A 国爆发了丧尸危机,所有的幸存者现在都聚集到了 A 国的首都(首都是编号为 1 的城市) ...

  3. 计算滚动条的宽度--js

    原理 创建两个div嵌套在一起 外层的div设置固定宽度和overflow:scroll 滚动条的宽度=外层div的offsetWidth-内层div的offsetWidth 实现代码 /** * 获 ...

  4. [jvm] -- 引用篇

    四种引用及其应用场景 强引用 强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收. 使用场景:啥时候都在使用 软引用 软引用在程序内存不足时,会被回收. 使用场景:创建缓存 ...

  5. JS常用知识点(一)

    1.js数据类型 基本类型:String.Number.boolean.null.undefined.Symbol 引用类型:Object null和undefined的区别:undefined表示定 ...

  6. python-闭包和装饰器-01-闭包(closure)

    闭包(closure) 闭包就是在一个函数定义的内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包,如: def line(a, b): def cal( ...

  7. APP自动化 -- TouchAction(触屏)

  8. 给隔壁的妹子讲『一个SQL语句是如何执行的?』

    前言 SQL作为Web开发是永远离开不的一个话题,天天写SQL,可是你知道一个SQL是如何执行的吗? select name from user where id = 1; 上面是一个简单的查询语句, ...

  9. three.js 欧拉角和四元数

    这篇郭先生就来说说欧拉角和四元数,欧拉角和四元数的优缺点是老生常谈的话题了,使用条件我就不多说了,我只说一下使用方法. 1. 欧拉角(Euler) 欧拉角描述一个旋转变换,通过指定轴顺序和其各个轴向上 ...

  10. 数据结构C语言实现----树

    树的基本知识点 树的定义 树的ADT(抽象数据类型) 树的储存结构 二叉树的定义 二叉树的储存结构 遍历二叉树 二叉树的建立 二叉树的ADT typedef struct BiTNode { Elem ...