Koa 入门

Koa 初窥

运行 npm i koa2 命令安装。新建一个 app.js 写入我们的第一份 Koa 代码。

const koa = require('koa2')
const app = new koa()

app.use(async (ctx, next) => {
  ctx.response.status = 200
  ctx.response.body = 'hi, koa'
  await next()
})

app.listen(3000)

node app.js,成功之后运行在 3000端口


中间件

中间件是 Koa 一个重要的概念,它是一个执行的链条,整个链条组成了一个运行的周期,这样说有点抽象,我们看代码理解。

const koa = require('koa2')
const app = new koa()

// 访问权限
app.use(async (ctx, next) => {
  console.log('权限验证通过...')
  await next() // 执行下一个中间件
})

// 日志记录
app.use(async (ctx, next) => {
  console.log('日志记录完成...')
  await next() // 执行下一个中间件
})

// 响应处理
app.use(async (ctx, next) => {
  ctx.response.status = 200
  ctx.response.body = 'hi, koa'
  await next()
})

app.listen(3000)

每一个中间件负责特定的小模块,互相配合,组合成一条完整的业务通道。中间件的功能也为 Koa 项目的扩展提供了很大的便利性,因为一些特定成熟的功能可以抽象成一个个模块共享出来,比如 路由模块模版引擎 ... 让我们可以站在巨人的肩膀,直接在项目中导入使用这些成熟的模块。

async await 语法可以参考 - JavaScript 异步


上下文

中间件函数中另外一个参数 ctx,是一个环境上下文参数,解决了中间件之间的依赖问题,是中间件之间的全局变量。

app.use(async (ctx, next) => {
  ctx.a = 1
  await next() 
})

app.use(async (ctx, next) => {
  console.log(ctx.a) // 1
  await next()
})

两一个作用,ctx 包含了 HTTP 的请求和响应处理。

Koa 教程 Koa 入门 Koa HTTP Koa 开发框架 Koa 路由 Koa 静态文件 Koa bodyparser Koa 视图 Koa 数据库 Koa 记录日志