Koa源码解析
Koa是一款设计优雅的轻量级Node.js框架,在这里和大家一起来学习其设计思想。
目录结构
首先将源码clone到本地,可以看到Koa的源码只包含下述四个文件:
lib
├── application.js,
├── context.js
├── request.js
└── response.js
application
application.js为Koa的主程序入口文件,在package.json的main字段有定义。它主要负责HTTP服务的注册、封装请求相应对象,并初始化中间件数组并通过compose方法进行执行。
context
context.js的核心工作为将请求与响应方法集成到一个上下文(Context)中,上下文中的大多数方法都是直接委托到了请求与响应对象上,本身并没做什么改变,它能为编写Web应用程序提供便捷。
request
request.js将HTTP的request方法进行抽象与封装,通过它可以访问到各种请求信息。
request
response.js与request功能类似,它是对response对象的抽象与封装。
中间件
示例
Koa引以为豪的有中间件系统(Middleware)了,相信大家都耳熟能详了,在这里还是先举一个最简单的例子来说明其原理:
const Koa = require('koa');
const app = new Koa();
app.use((ctx, next) => {
console.log('enter 1');
next();
console.log('out 1');
});
app.use((ctx, next) => {
console.log('enter 2');
next();
console.log('out 2');
});
app.use((ctx, next) => {
console.log('enter 3');
next();
console.log('out 3');
});
app.listen(3000);