Skip to content

Commit 6a57996

Browse files
committedAug 6, 2019
koa 源码阅读笔记 1
1 parent 7554679 commit 6a57996

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
 

‎Note/express-vs-koa2/koa2.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
## koa2 源码阅读
2+
3+
### 核心文件
4+
5+
#### application.js
6+
application 就是 koa 库默认导出的对象
7+
8+
此对象有如下方法:
9+
10+
* **constructor**
11+
* 对象初始化,设置默认配置
12+
* **listen**
13+
* 创建 server,并设置 http 回调至当前 koa 实例的工具方法
14+
* toJSON
15+
* 自定义当前实例 toJson 对象,仅返回部分字段
16+
* inspect
17+
* 用来自定义 console.log 输出值(util.inspect.custom)
18+
* **use**
19+
* 用来录入中间件,保存至实例的 middleware 中去
20+
* **callback**
21+
* 创建并返回 http 响应的回调函数,在回调函数中已组合中间件, 并根据 req,res 创建好了 koa 上下文
22+
* **handleRequest**
23+
* 执行串联好的中间件,并在中间件执行完毕后,使用 res 返回给客户端响应数据(返回方法也在此文件实现,但并未导出)
24+
* **createContext**
25+
* 初始化一个 context,在中间件执行中,作为参数传递
26+
* **onerror**
27+
* 默认的 error 响应函数
28+
29+
#### context.js
30+
context 是一个上下文对象,每一个 http 请求,都会对应一个上下文,上下文包含了 req, res 等信息,并且代理了部分 req 和 res 的相关方法
31+
32+
context 返回的是一个对象,这个对象在 application 创建 context 时作为原型使用,此原型有如下方法:
33+
34+
* inspect
35+
* 自定义输出
36+
* toJSON
37+
* 自定义转 json 对象
38+
* assert
39+
* 实际上是 httpAssert 的引用,便于 ctx 断言条件抛出响应错误,如:`ctx.assert(ctx..user, 401, 'Please login!');`
40+
* throw
41+
* 实际上转调 createError,并抛出异常,如:`ctx.throw(403)`, `ctx.throw(403,'name required')` 等
42+
43+
44+
#### request.js
45+
#### response.js
46+

0 commit comments

Comments
 (0)