koa是一个web框架,接收http请求,返回http响应。
一般用法
一般的用法如下:
var koa = require('koa');//导入koa模块
var app = koa();
//中间件处理业务
app.use(function *(){
this.body = 'Hello World';
});
//接收http响应,监听端口3000
app.listen(3000);
中间件
其中主要的部分在于中间件,也就是app.use()函数。这一部分是真正实现业务功能的地方,也是编程最主要的地方。而且中间件是可以级联的,如下:
app.use(function *(next){
var start = new Date;
yield next;
var ms = new Date - start;
this.set('X-Response-Time', ms + 'ms');
});
// logger
app.use(function *(next){
var start = new Date;
yield next;
var ms = new Date - start;
console.log('%s %s - %s', this.method, this.url, ms);
});
// response
app.use(function *(){
this.body = 'Hello World';
});
当遇到yield next时,koa会暂停当前中间件,转而执行下一个符合请求的中间件,执行完毕之后再继续执行当前中间件。
注意,中间件的执行顺序就是声明的顺序。
上下文
koa将request和response封装在一个上下文对象中,在本文的例子中就是this对象。这个上下文对象提供了许多方法供我们开发时使用。