Skip to content

Latest commit

 

History

History
55 lines (35 loc) · 1.75 KB

第一个中间件.md

File metadata and controls

55 lines (35 loc) · 1.75 KB

中间件长什么样子

在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);