Connect是一个框架,它使用被称为中间件的模块化组件,以可重用的方式实现Web程序中的逻辑。在Connect中,中间件组件是一个函数,它拦截HTTP服务器提供的请求和响应对象,执行逻辑,然后或者结束响应,或者把它传递给下一个中间件组件。Connect用分派器把中间件“连接”在一起。
HTTP请求穿过Connect服务器的生命周期
1、dispathcer收到请求,把它传给(next())第一个中间件--》logger。
2、logger记录请求日志,并用next()传给下一个中间件--》bodyparser
3、请求体会被解析,并用next()传给下一个中间件--》static
4、如果请求的是静态文件,用这个文件作为响应,不再调用next;否则请求进入下一个中间件
5、请求被一个定制的中间件处理好,响应结束。
connect工作机制
在connect中,中间件组件是一个js函数,接受三个参数:请求对象,响应对象,next回调函数,表明这个中间件已经完成了它的工作,可以执行下一个中间件。
挂载中间件和服务器
Connect中有一个挂载的概念,可以给中间件或整个程序定义一个路径前缀。使用挂载,可以像在根层次下那样编写中间件(/根req.url),并且不修改代码就可以把它用在任一路径前缀上。
比如说,如果一个中间件组件或服务器挂载到了/blog上,代码中的/article/1的req.uel通过客户端来访问就是/blog/article/1.这种分离意味着你可以在多个地方重用博客服务器,不用为不同的访问源修改代码。比如说,如果你决定改用/articles(/articles/article/1)提供文章服务,不再用/blog,只要修改挂载路径前缀就可以了。