简单介绍
说到Koa我们会想到Express,他们都是基于nodejs的框架,Koa 相对更为年轻, 是 Express 原班人马基于 ES6 新特性重新开发的框架,框架自身不包含任何中间件,很多功能需要借助第三方中间件解决,但是由于其基于 ES6 generator 特性的异步流程控制,支持 async/await 。
优点:1.轻量级 2.简洁 3.同步异步的处理 4.try catch异常捕获
Koa 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持.
npm install koa
app.js
const Koa = require('koa');
const app = new Koa();
// (node v7.6+) 支持 asnyc await
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
//低版本(node v7.6-)
app.use((ctx, next) => {
const start = Date.now();
return next().then(() => {
const ms = Date.now() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
});
app.listen(3000);
命令行执行 node app.js
浏览器运行 http://127.0.0.1:3000/就可以了
也可以在package.json中的script里配置
命令行执行 npm run koa也可以达到同样效果
"scripts": {
"koa": "node app.js"
},
每收到一个http请求,koa就会调用通过app.use() 注册的async函数,ctx是由koa传入的封装了request和response的变量,我们可以通过它访问request和response,next是koa传入的将要处理的下一个异步函数。
上面的异步函数中,我们首先用await next();处理下一个异步函数,然后,设置response的Content-Type和内容。
由async标记的函数称为异步函数,在异步函数中,可以用await调用另一个异步函数,这两个关键字将在ES7中引入。
koa之所以更轻便是因为自身不带任何中间件,所以我们需要自己安装需要的中间件
1.koa-router 或者 koa-route
2.koa-bodyparser 或者 koa-body
3.koa-views
4.koa-static
5.koa-compress
6.koa-logger 或者 koa-bunyan-logger