JimQing's Blog


View JimQing's projecton GitHub

Koa2.0 框架入门

18 Mar 2019

Koa2.0框架是一个基于nodeJs的一个后端框架。当下很多流行的企业级框架都以Koa为核心。

看一个官网的简介。 如何安装Koa?

举个简单的例子,用 Koa 运行一个服务器只要三行代码。

const koa = require("koa");
const app = new koa();
app.listen(3000);

Koa的框架最大的好处不在多简单的开启服务,而在于封装了httpServer request response对象。

简单来说:

客户端从发请求到看到内容,服务器工作状态如下:

接收到请求(request) -> 处理请求,生成数据 -> 发送数据(response)

Koa:

request -> middleware -> response

1.处理请求并包装为对象
2.通过use方法注册中间件进行数据处理
3.包装输出

Koa 在这个过程中处理了request和response,我们需要做的是注册(编写)中间件(middleware)

对于注册和编写中间件(middleware)Koa 提供了好用的API

- Application
-- context
-- request
-- response

此处的Application 指的就是上面代码中的 app 而下面的context对象,则是常用的Koa中的上下文对象 简写为 ctx

context对象
- .req: Node 的 request 对象
- .res: Node 的 response 对象
- .request: `Koa 中的 request 对象`
- .response: `Koa 的 response 对象`
- .state: `用户数据存储空间`
- .app: `当前应用程序实例 -Application 对象`
- .redirect `重定向`
- .cookies `对象`
    -- .set(name, [options])
    -- .get(name, ,value, [options])
    -- options
    -- .maxAge
- .signed
    -- .expires
- .path
    -- .domain
- .secure
    -- .httpOnly
- .overwrite
    -- .throw(code, message, obeject)

可以看到 koa 所提供的 Api 包含了一些 nodeJs 的基础 api,但是 koa 依旧建议尽量使用 koa 的封装对象

对于程序错误,koa 服务若是报错默认返回 500,需要自行对错误进行处理

错误处理及捕获
-app.on('error', err => {})

关于中间件,其实中间件是一个函数,传入了context对象,通过next走向下一个函数,从而保证每次处理独立解耦

middleware
-- use(callback)
-- callback(context, next)
-- context对象(可扩展)
每一次请求都会包装一个context对象
-next
每一个中间件都是一个迭代器,通过next方法执行到下一个中间件

至此,希望此博客能对你有所帮助。