介绍
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
使用
-
安装
npm i koa
-
使用
// 引入 koa const Koa = require('koa')// 创建一个应用 const app = new Koa()// 监听端口 app.listen(8081, () => {console.log('server is running') })
context上下文对象
属性名 | 说明 |
---|---|
app | 当前 applicaiton 应用对象 |
req | 原生 NodeJS 的 request 对象 |
request | 请求对象 |
res | 原生 NodeJS 的 response 对象 |
response | 响应对象 |
state | 空对象,通过中间件传递信息到视图 |
originaUrl | 原生 NodeJS 的 request 下的 url 属性值 |
路由
-
安装
npm i @koa/router
-
使用
// 引入 const Router = require('@koa/router')// 定义路由对象 const router = new Router({prefix: '/user' // 定义路由前缀 })// 定义接口 // router.[请求方法]([请求路径], [回调函数]) router.get('/list', (context) => {console.log(1) })// 使用 app.use(router.routes())
中间件
/*** 创建中间件,中间件函数用于处理 http 请求、校验 token 权限、收集错误日志等* @params {object} context:上下文对象,对 request、response 的封装* @params {function} next:将当前中间件的执行权交给下一个中间件*/
app.use((context, next) => {console.log(1);next()console.log(11);
})app.use((context, next) => {console.log(2);next()console.log(22);
})app.use((context, next) => {console.log(3);next()console.log(33);
})/*** 执行顺序:1 -> 2 -> 3 -> 33 -> 22 -> 11* 类似事件捕获、事件冒泡*/
核心原理实现
我自己写了一个 mini 版的 koa 框架,基本实现了 koa 框架的核心功能,主要用于了解 koa 的底层实现原理,发布在了 GitHub 上,并附带详细的解析,觉得不错欢迎 ⭐Star 。
GitHub 链接