const koa = require('koa');
const app = new koa();
app.use(async ctx => {
ctx.body = 'hello world'
});
app.listen(3000);
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
上下文
Koa 的 Context 把 node 的 request, response 对象封装进一个单独对象, 并提供许多开发 web 应用和 APIs 有用的方法. 那些在 HTTP server 开发中使用非常频繁操作, 直接在 Koa 里实现, 而不是放在更高层次的框架, 这样中间件就不需要重复实现这些通用的功能。
中间件
const koa = require('koa');
const app = new koa();
app.use(async (ctx, next) => {
await next();
const result = ctx.response.get('X-Response-Time');
console.log(`${ctx.method}-${ctx.url}-${rt}`)
});
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const end = Date.now();
const ms = end - start;
console.log(`X-Response-Time - ${ms}ms`);
});
app.use(async ctx => {
ctx.body = hello world;
});
app.listen(3000);
简单解释下,代码起始初始化一个 koa 实例,下面分别通过 use 方法载入了三个中间件方法,执行顺序:
进入第一个中间件next()
跳到下一个中间件new Data()
记录当前时间next()
跳到下一个中间件将 ctx.body
赋值回到上一个中间件再次记录当前时间并计算时间差存到 http header
中回到上一个中间件将 header 中的 X-Response-time
打印出来
这里的执行顺序延伸出了十分经典的洋葱模型