接触 Koa2 框架

  刚接触 Koa2 框架,记录一下基础知识。学习过程代码可在 Github - learn-koa 查看。

一、Koa

1、安装 Koa 框架

1
npm i koa -S

2、引入 Koa

1
2
3
4
5
6
7
8
9
10
11
// 引入模块
const Koa = require('koa')
const app = new Koa()

// 配置中间件
app.use(async ctx => {
ctx.body = '你好 koa'
})

// 监听端口
app.listen(9000)

二、Koa 路由

1、安装 Koa 路由

1
npm i koa-router -S

  路由就是根据不同的 URL 地址,加载不同的页面实现不同的功能。运行以下代码后在浏览器地址栏输入 localhost:9000 可以看到"首页",输入 localhost:9000/news 可以看到"新闻"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// 引入模块
const Koa = require('koa')
const router = require('koa-router')() // 引入并实例化

// 实例化
let app = new Koa()

// 配置路由
// ctx 上下文 context,包含了 request 和 response 等信息
router
.get('/', async ctx => {
ctx.body = '首页'
})
.get('/news', async ctx => {
ctx.body = '新闻列表'
})
// get 传值
.get('/newscontent', async ctx => {
// 访问 http://localhost:9000/newscontent?aid=123&name=zhangsan
console.log(ctx.query)
console.log(ctx.request.query) // { aid: '123', name: 'zhangsan' } 对象
ctx.body = '新闻详情'
})
// 动态路由
.get('/newsdetail/:id', async ctx => {
// 访问 http://localhost:9000/newsdetail/1234
console.log(ctx.params) // { id: 1234 }
ctx.body = '新闻详情 - 动态路由'
})
// 动态路由可以传入多个值
.get('/newsdetail/:aid/:bid', async ctx => {
// 访问 http://localhost:9000/newsdetail/1234/5678
console.log(ctx.params) // { aid: 1234, bid: 5678 }
ctx.body = '新闻详情 - 动态路由 - 传入多个值'
})

app
.use(router.routes()) // 启动路由
.use(router.allowedMethods()) // router.allowedMethods() 用在路由匹配 router.routes() 之后,所以在当所有路由中间件最后调用,此时根据 ctx.status 设置 response 响应头

app.listen(9000)
console.log('请浏览器打开 http://localhost:9000 或 http://localhost:9000')

2、Koa 路由 get 传值

  在 Koa2 中 GET 传值通过 ctx 或 ctx.request 接收;动态路由传值可通过 ctx.params 接收。代码见 Github - learn-koa/app03.js

  • query 返回的是格式化好的参数对象推荐
  • queryString 返回的是请求字符串

三、中间件

1、应用级中间件

  代码见 Github - learn-koa/app04.js

2、路由中间件

  代码见 Github - learn-koa/app05.js

3、错误处理中间件

  代码见 Github - learn-koa/app06.js

4、中间件处理顺序 - Koa2 的洋葱模型

  代码见 Github - learn-koa/app07.js

以上

随笔标题:接触 Koa2 框架

随笔作者:刘先玉

发布时间:2020年02月02日 - 22:46:03

最后更新:2020年09月15日 - 11:35:14

原文链接:https://liuxianyu.cn/article/learn-koa.html