在上一节中我们简单了解了express的路由,本文主要分析下express的另一个核心功能中间件的使用。路由是express整个框架能有如今广泛使用和发展的基础,那中间件就是其发展的养分。正是express丰富的中间件才节省了我们大量的开发时间。
对于express来说,中间件其实就是一个规定了入参和出参的JavaScript函数,这个函数可以处理请求request和返回response相关的参数,其功能如下:
//处理请求对象的:请求参数重插入个参数 const myMiddleware = function (req, res, next) { console.log('this is a middleware') req.requestTime = Date.now() next() }
可配置的中间件,目前这种中间件在我们实际应用中比较多,比如经典expressJWT bodyParser中间件
module.exports = function (options) { return function (req, res, next) { // 根据传入的参数执行一些操作 next() } }
app.use()
和 app.METHOD()
函数将应用层中间件绑定到应用程序对象的实例,一般写在应用最前面var app = express(); app.use(function (req, res, next) { ****** next(); });
let express = require('express'); let router = express.Router(); router.post('/download/**/', function (req, res, next) { ****** });
express.static
外,先前 Express 随附的所有中间件函数现在以单独模块的形式提供。请查看中间件函数的列表。const express = require('express'); const app = express(); app.use(express.urlencoded({extended: false}));
const morgan = require('morgan') app.use(morgan('short'));
app.use((err, req, res, next) => { if (res.headersSent) { return next(err); } res.status(500); res.render('error', { error: err }); });
express中间件的思想不紧紧方便了开发,这种设计也是我们系统高内聚低耦合多思想实践之一。在我们日常的业务开发中也可以参照这种设计来实现需求。