中间件长什么样子
在express中,中间件是非常重要的概念。一个请求,从浏览器发起,到服务端返回,生命周期大概是下面这样子。
浏览器发起请求 -> 服务端收到请求 -> 中间件A -> 中间件B -> … -> 服务端返回
对pipeline有所了解的同学应该对上面的处理方式不陌生。
如果不了解也没关系,我们直接来看下,一个最简单中间件是什么样子的。
req:请求对象。可以从中获取请求相关信息,比如访问地址等。(浏览器 —> 服务器)
res:响应对象。可以向浏览器返回响应内容,比如返回HTML页面。(服务器 —> 浏览器)
next:一个函数。目前仅需要知道,next() 被调用时,控制权就会从当前中间件,转移到下一个中间件。
function(req, res, next){
console.log('打印一些日志');
next();
}
下面就看实际的例子
中间件的例子
看下面代码示例(代码),用户访问 \/hello 路径时,服务端先 1、打印日志 2、访问数据库 3、最后才返回网页。
这三个步骤,可以拆分成三个中间件,如下所示,非常简单。结构更清晰,同时方便拆分组合。
比如某一天,不想打印访问日志了,把第一个中间件删掉就行。
var express = require('express');
var app = express();
app.get('/hello', function(req, res, next){
console.log('打印访问日志');
next();
});
app.get('/hello', function(req, res, next){
console.log('假设我在访问数据库');
next();
});
app.get('/hello', function(req, res, next){
res.send('你好我是中间件!');
});
app.listen(3000);