首先搭建一个koa服务示例:
//导入koa,和koa1不同,我们导入的是一个class,因此用大写的Koa表示
const
Koa =
require(
'koa');
//创建一个KOA对象表示 web app本身
const
app =
new
Koa();
//对于任何请求app将调用该异步函数处理请求
app.
use(
async (
ctx,
next)
=>{
await
next();
ctx.
response.
type =
'text/html';
ctx.
response.
body =
'<h1>hello koa2!</h1>';
})
app.
listen(
3000);
console.
log(
'app start at 3000...')
我们首先用await.next()处理下一个异步函数,然后设置response的Content-type和内容。
由async标记的函数为异步函数,在异步函数中可以用await调用另一个函数,这两个关键字将在ES7中引入。
关于koa的执行逻辑,没收到一个http请求,koa就会调用通过app.use注册的async函数,并传入ctx和next。
我们对ctx操作,并设置返回内容,但是为什么要调用await.next。原因是koa把async函数组成一个处理链,每个async函数都可以做一些自己的事情,然后用await调用下一个async函数。我们把每个async函数称为middleware,这些middleware可以组合起来,完成很多有用的功能。