github rss
Koa 学习笔记
Jan 26, 2018
One minute read

简介

基于 Node.js 平台的下一代 Web 开发框架。使用 koa 编写 Web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。

安装

npm install koa

应用程序

Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的。一个关键的设计点是在其低级中间件层中提供高级“语法糖”。 这提高了互操作性,稳健性,并使书写中间件更加愉快。

级联

通过一系列功能直接传递控制,直到一个返回,Koa 调用“下游”,然后控制流回“上游”。(不是太懂)

设置

应用程序设置是 app 实例上的属性,目前支持如下:

  • app.env 默认是 NODE_ENV 或 “development”
  • app.proxy 当真正的代理头字段将被信任时
  • app.subdomainOffset 对于要忽略的 .subdomains 偏移[2]

app.listen(…)

Koa 应用程序不是 HTTP 服务器的1对1展现。 可以将一个或多个 Koa 应用程序安装在一起以形成具有单个HTTP服务器的更大应用程序。 创建并返回 HTTP 服务器,将给定的参数传递给 Server#listen()。这些内容都记录在 nodejs.org.

const koa = require('koa');
cosnt app = new Koa();
app.listen(3000);

app.callback()

返回适用于 http.createServer() 方法的回调函数来处理请求,也可以使用此回调函数将 Koa 应用程序挂载到 Connect/Express 应用程序中

app.use(function)

将给定的中间件方法添加到此应用程序。

app.keys=

设置签名的 Cookie 密钥。

app.context

app.context 是从其创建 ctx 的原型。可以通过编辑 app.context 为 ctx 添加其他属性。这对于将 ctx 添加到整个应用程序中使用的属性或方法非常有用,这可能会更加有效(不需要中间件)和/或 更简单(更少的 require()),而更多地依赖于ctx,这可以被认为是一种反模式

错误处理

默认情况下,将所有错误输出到 stderr,除非 app.silent 为 true。 当 err.status 是 404 或 err.expose 是 true 时默认错误处理程序也不会输出错误。 要执行自定义错误处理逻辑,如集中式日志记录,可以添加一个 “error” 事件侦听器:

app.on('error', err => {
  log.error('server error', err)
  })

上下文

Koa Context 将 node 的 request 和 response 对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。 这些操作在 HTTP 服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能。

每个 请求都将创建一个 Context,并在中间件中作为接收器引用,或者 ctx 标识符

koa 文档


Back to posts