当前位置:网站首页>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
边栏推荐
- Service - DHCP principle and configuration
- JS学习 2022080
- make & cmake
- "DevOps Night Talk" - Pilot - Introduction to CNCF Open Source DevOps Project DevStream - feat. PMC member Hu Tao
- fme csmapreprojector转换器使用高程异常模型进行高程基准转换
- 虎牙自动发弹幕换牌子
- 实例055:按位取反
- 浅谈cors
- 二叉树 | 层序遍历 | leecode刷题笔记
- Nodes in the linked list are flipped in groups of k
猜你喜欢
3598. Binary tree traversal (Huazhong University of Science and Technology exam questions)
Power system power flow calculation (Newton-Raphson method, Gauss-Seidel method, fast decoupling method) (Matlab code implementation)
How many threads does LabVIEW allocate?
数学建模准备知识
二叉树 | 代码随想录学习笔记
OneNote tutorial, how to organize notebooks in OneNote?
RK3399 platform development series explanation (kernel-driven peripherals) 6.35, IAM20680 gyroscope introduction
阿里云贾朝辉:云XR平台支持彼真科技呈现国风科幻虚拟演唱会
H3C S5130 IRF做堆叠
威纶通触摸屏如何在报警的同时,显示出异常数据的当前值?
随机推荐
【640. Solving Equations】
XSLeaks 侧信道攻击 (unfinished)
Fatal error: cstring: No such file or directory
DC-7靶场下载及渗透实战详细过程(DC靶场系列)
链表中的节点每k个一组翻转
诺诚健华通过注册:施一公家族身价15亿 高瓴浮亏5亿港元
leetcode:357. 统计各位数字都不同的数字个数
腾讯云轻量应用服务器配置及建网站教程
JS use regular expressions in g model and non g difference
2022年8月的10篇论文推荐
EL表达式
实例051:按位与
Detailed installation steps and environment configuration of geemap
OneNote tutorial, how to organize notebooks in OneNote?
Spark基础【RDD转换算子】
How to be a Righteous Hacker?What should you study?
【uniapp】uniapp微信小程序开发:启动微信开发者工具提示no such file or directory错误
MySQL学习笔记(1)——基础操作
Qualcomm Platform Development Series Explanation (Application) Introduction to QCMAP Application Framework
This visual tool artifact is more intuitive and easy to use!love so much