一、koa的简单使用
1.安装koa: npm i koa -S
2.中间件机制、请求、响应处理
const Koa = require('koa')
const app = new Koa();
// 中间件
app.use(async (ctx, next)=>{
console.log(1);
await next();
console.log(4);
const rt = ctx.response.get('time');
console.log(`输出计时:${ctx.method} ${ctx.url} - ${rt}`);
})
// 中间件
app.use(async (ctx, next)=>{
const start = Date.now();
console.log('开始计时');
console.log(2);
await next();
console.log(3);
const ms = Date.now() - start;
ctx.set('time', `${ms}ms`);
console.log('计时结束');
})
// 响应
app.use(ctx=>{
console.log('响应用户请求');
ctx.status = 200;
ctx.type = 'html';
ctx.body = '<h1>hello koa</h1>'
})
app.listen(3000)
当请求进来时,从上到下执行(只执行所有中间件await next()前面的代码)
当响应完成后,再从下到上执行中间件await next()后面的代码
3.错误处理
const Koa = require('koa');
const app = new Koa();
// 错误处理中间件
app.use(async (ctx,next)=>{
try {
await next();
}
catch (err){
// 响应用户
ctx.status = err.statusCode || err.status || 500;
ctx.body = err.message;
// 触发事件
console.log('错误:', err.message);
ctx.app.emit('errHandle', err, ctx);
}
})
app.use(async (ctx, next)=>{
ctx.throw(401, '发生错误')
})
// 监听错误事件
app.on("errHandle", err=>{
console.error("监听全局错误:", err.message);
})
app.listen(3000)