中间件模块化与中间件合成
一、中间件模块化
定义中间件模块
module.exports = aysnc (ctx,next) => {
console.log("test")
await next()
}
使用中间件模块
// 引入 koa 模块
const Koa = require('koa')
// 创建 koa 应用
const app = new Koa()
// 使用中间件
const TestMiddleware = require("TestMiddleware")
app.use(TestMiddleware)
app.use(async (ctx,next) => {
ctx.body = "Hello World"
})
// 启动应用
app.listen(3000)
二、使用 koa-compose
模块合并中间件
1. 定义耗时日志中间件
module.exports = async (ctx,next) => {
let d = Date.now()
console.log("请求开始")
await next()
console.log(`请求耗时:${Date.now() - d} ms`)
}
2. 定义请求日志中间件
module.exports = async (ctx,next) => {
console.log(`${ctx.method} 请求地址: ${ctx.url}`)
await next()
}
3. 定义统一日志中间件
const compose = require('koa-compose')
const reqlogger = require('./reqlogger')
const timelogger = require('./timelogger')
module.exports = compose([reqlogger,timelogger])
4. 使用日志中间件
// 引入 koa 模块
const Koa = require('koa')
// 创建 koa 应用
const app = new Koa()
const logger = require('./middlewares/logger.js')
app.use(logger)
app.use(async (ctx,next) => {
// 执行下一个中间件
ctx.body = "Hello World"
})
// 启动应用
app.listen(3000)
网友评论