当前位置:网站首页>koa框架(一)
koa框架(一)
2022-08-10 22:38:00 【Silent Land】
koa简介
功能
- 提供基础的HTTP应用服务
核心概念
- 应用(Koa Application)
- 上下文 (Context)
- 请求(Request)
- 响应(Response)

特点
- 轻量/简洁
- async/await
- 丰富的中间件
koa使用
安装
Koa需要 node v7.6.0或更高版本来支持ES2015、异步方法
npm install -S koa
常用api
app.use
- 为应用添加指定的中间件
app.listen
如下为一个绑定3000端口的简单 Koa 应用,其创建并返回了一个 HTTP 服务器,为 Server#listen() 传递指定参数(参数的详细文档请查看nodejs.org)。
const Koa = require('koa')
const app = new Koa()
app.listen(3000)
- app.on
- 事件侦听
koa中间件
- koa的工作原理
- 执行的顺序:顺序执行
- 回调的顺序:反向执行
- 先进后出

const Koa = require('koa')
const app = new Koa()
const middleware = function async (ctx, next) {
console.log('this is a widdleware')
console.log(ctx.request.path)
next()
}
const middleware1 = function async (ctx, next) {
console.log('this is a widdleware1')
console.log(ctx.request.path)
next()
console.log(1111111)
}
const middleware2 = function async (ctx, next) {
console.log('this is a widdleware2')
console.log(ctx.request.path)
next()
console.log(22222)
}
const middleware3 = function async (ctx, next) {
console.log('this is a widdleware3')
console.log(ctx.request.path)
next()
console.log(3333)
}
app.use(middleware)
app.use(middleware1)
app.use(middleware2)
app.use(middleware3)
app.listen(3000)
打印
this is a widdleware
/
this is a widdleware1
/
this is a widdleware2
/
this is a widdleware3
/
3333
22222
1111111
this is a widdleware
/favicon.ico
this is a widdleware1
/favicon.ico
this is a widdleware2
/favicon.ico
this is a widdleware3
/favicon.ico
3333
22222
1111111
Koa 的中间件通过一种更加传统(您也许会很熟悉)的方式进行级联,摒弃了以往 node 频繁的回调函数造成的复杂代码逻辑。 然而,使用异步函数,我们可以实现"真正" 的中间件。与之不同,当执行到 yield next 语句时,Koa 暂停了该中间件,继续执行下一个符合请求的中间件(‘downstrem’),然后控制权再逐级返回给上层中间件(‘upstream’)。
常用插件
路由
koa-router
- 安装
npm install -S koa-router
- 使用
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router()
router.get('/', ctx => {
console.log('ctx', ctx)
ctx.body = 'Hello World'
})
// 路由定义的方法定义到koa应用中
app.use(router.routes()).use(router.allowedMethods())
app.listen(3000)
跨域处理
@koa/cors
- 安装
npm install -S @koa/cors
- 使用
const cors = require('@koa/cors')
app.use(cors())
压缩
koa-compress
静态资源
koa-static
- 安装
npm install -S koa-static
- 使用
const path = require('path')
const staticServer = require('koa-static')
app.use(staticServer(path.join(__dirname, 'static')))
协议处理
- koa-json
- 安装
npm install koa-json -S
- 使用
const json = require('koa-json')
// 请求上拼接pretty时格式化
app.use(json({
pretty: false, param: 'pretty'}))
- koa-body
- 安装
npm install koa-body -S
- 使用
const koabody = require('koa-body')
app.use(koabody())
安全
- 鉴权方式
- koa-session
- koa-jwt
- 通信头
- koa-helmet
日志
koa-logger
边栏推荐
猜你喜欢
随机推荐
威纶通触摸屏如何在报警的同时,显示出异常数据的当前值?
Glide缓存核心原理详解
2022年8月的10篇论文推荐
RecyclerView上下滑动时,不调用onBindViewHolder 导致列表的item不刷新
【uniapp】uniapp微信小程序开发:启动微信开发者工具提示no such file or directory错误
Distribution Network Expansion Planning: Consider Decisions Using Probabilistic Energy Production and Consumption Profiles (Matlab Code Implementation)
虎牙自动发弹幕换牌子
fme csmapreprojector转换器使用高程异常模型进行高程基准转换
2021 IDEA creates web projects
金山云CEO王育林离职:正值冲刺港股之际 雷军曾送金砖
H3C S5130 IRF做堆叠
如何成为一名正义黑客?你应该学习什么?
虚拟地址空间
高数_复习_第5章:多元函数微分学
3598. 二叉树遍历(华中科技大学考研机试题)
3598. Binary tree traversal (Huazhong University of Science and Technology exam questions)
Why general company will say "go back messages such as" after the end of the interview, rather than just tell the interviewer the result?
port forwarding
LeetCode每日两题01:反转字符串 (均1200道)方法:双指针
云服务器基于 SSH 协议实现免密登录









