多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 手动实现中间件 需求,记录请求时间,在控制台打印。 ``` // 版本 1,不单独抽出中间件 const express = require('express'); const app = express(); // 对 / 请求配置多个处理函数,注意第一个函数 next 参数,并调用 app.get('/', (req, res, next) => { console.log(Date.now()); next(); // 若这里不显示调用,下面那个函数就不会执行,也即不会响应。 }, (req, res) => { res.send('Hello World!') }); app.listen(8888, () => { console.log('8888 Running...'); }); ``` ``` // 版本 2,单独抽出中间件 const express = require('express'); const app = express(); let myLogger = function (req, res, next) { // 中间件 console.log(Date.now()); next(); // 不能少了 } app.get('/', myLogger); // 应用中间 app.get('/', (req, res) => { res.send('Hello World!'); }) app.listen(8888, () => { console.log('8888 Running...'); }); ``` ``` // 版本 3,单独抽出中间件,针对多种请求方式 const express = require('express'); const app = express(); let myLogger = function (req, res, next) { // 中间件 console.log(Date.now()); next(); // 不能少了 } app.use(myLogger); // 省略路径,针对任意路径与请求方式 app.get('/', (req, res) => { res.send('Hello World Get!'); }) app.post('/', (req, res) => { res.send('Hello World Post!'); }) app.listen(8888, () => { console.log('8888 Running...'); }); ``` ``` // 版本 4,单独抽出中间模块 // 文件位置 myapp/mylogger.js let myLogger = function (req, res, next) { console.log(Date.now()); next(); } module.exports = myLogger; ``` ``` // 文件位置 myapp/app.js const myLogger = require('./mylogger.js'); const express = require('express'); const app = express(); app.use(myLogger); app.get('/', (req, res) => { res.send('Hello World Get!'); }) app.post('/', (req, res) => { res.send('Hello World Post!'); }) app.listen(8888, () => { console.log('8888 Running...'); }); ```