koa学习笔记:基本用法

koa在趋势上应该比express风头更劲,因为koa可以调用async, await来解决异步,避免了多层嵌套导致代码的混乱。

但在很多基本功能上,koa和express区别不大,所以有了express的基础之后再学习koa就轻松很多。这和学习过一种模板引擎之后再学习其他模板引擎都会容易很多是一样的道理。

启动步骤

  1. 引入koa对象 const Koa = require("koa")
  2. 创建服务器对象 const app = new Koa()
    • 这里需要注意的是,Koa创建的服务器是Koa实例,所以用new来创建
  3. 配置中间件 app.use()
  4. 监听端口 app.listen(port)

函数参数

  • context 上下文对象
    • 是从请求到响应过程中的一个描述对象
    • request+response封装到一个对象里
  • next函数:用于调用下一个中间件
  • request:请求对象
  • response:响应对象

需要注意的是koa创建的服务器的requestresponse都在context身上,所以写法应该是

1
2
3
4
5
6
const Koa = require("koa");
let app = new Koa();
app.use((ctx, next) => {
console.log(ctx.request.query);
ctx.response.body = "hello world";
})

写作ctx.reqctx.res也可以。但是不要使用node的原生res对象

context常用属性

  • ctx.cookies.get(name) 获取cookies
  • ctx.cookies.set(name, value) 设置cookies

response常用属性

  • response.header/response.headers
  • response.socket
  • response.status 响应状态(可以通过状态码设置)
  • response.message 获取响应的状态信息(与status关联)
  • response.body 响应主题
  • response.set(field, value)

request常用属性

  • request.url(ctx.url)
  • request.method() 请求方式
  • request.headers