Node.js 系列教程之 Koa
https://www.bilibili.com/video/BV1W64y1h7qi 1
01 Koa介绍
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造,致力于成为 web 应用和API开发领域中的一个更小、更富有表现力、更健壮的基石。
官网:https://koajs.com/
GitHub仓库:https://github.com/koajs/koa一个翻译的中文网:https://koa.bootcss.com/
Koa的原理和内部结构很像Express,但是语法和内部结构进行了升级Koa内部使用ES6编写,号称是下一代Node.js Web框架它的主要特点是通过利用 async函数,帮你丢弃回调函数
Koa 1 是基于 ES2015 中的 Generator 生成器函数结合 CO 模块Koa 2 完全抛弃了 Generator 和 co,升级为了 ES2017 中的 async/await 函数
o Koa 2元王地弃J Generator和 co,开级为J ES201/中的 async/awalt函数l正式由于 Koa 内部基于最新的异步处理方式,所以使用 Koa 处理异常更加简单Koa中提供了CTX上下文对象
Express 是扩展了 req 和 res Koa 并没有捆绑任何中间件,而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
有很多开发工具/框架都是基于 Koa 的
有很多开发工具/框架都是基于 Koa 的
Egg.js
构建工具 Vite
Koa vs Express
个人评价
个人评价
koa 2 好用,设计上的确有优势。优势不在能实现更强的功能,而是可以更简单地完成功能。
o koa 2 社区远不如 express koa 1 在思想上与 koa 2 是一致的,但是 koa 2 的实现更漂亮
awesome-koa
02 Koa基本使用
03 Koa中的Context上下文对象
上下文(Context)
Koa Context将 node的request和response对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。这些操作在 HTTP 服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能。
-每个-请求都将创建一个 Context,并在中间件中作为接收器引用,或者ctx 标识符,如以下代码片段所示:
04 Koa中的路由
ctx.path if 判断 用路由插件就简单
05 Koa中的静态资源托管
静态资源托管
如果网站提供静态资源(图片、字体、样式表、脚本…..),为它们一个个写路由就很麻烦,也没必要。koa-static 模块封装了这部分的请求。
1、安装
1 npm install koa-static
koa-mount 结合 虚拟路径
06 Koa中的路由重定向
ctx.redirect('/home)
07 Koa中的中间件执行栈结构
Koa 中间件
Logger 功能
Koa 的最大特色,也是最重要的一个设计,就是中间件(middleware)。为了理解中间件,我们先看一下Logger(打印日志)功能的实现。
洋葱模型 reuest /response
前先 next() 后最后
先进后出 stack结构
08 Koa中的异步中间件
Koa 的中间件
中间件执行栈结构(洋葱模型)
异步中间件
加async
const util = require('util')
util.promisify(fs.readfile) to promise
app.use(async())
09 Koa中的中间件合并处理
koajs / compose
app.use 里面try
10 Koa的中间件异常处理
ctx.app.emit('error') 触发
app.on('error',()) 监听
11 Koa中的异常处理
12 Koa实现原理-源码目录结构
13 Koa实现原理-基础结构
14 Koa实现原理-中间件
一个应用类 监听端口 use 回调方法
15 Koa实现原理-分析Context对象的内容组成
16 Koa实现原理-初始化Context上下文对象
17 Koa实现原理-扩展Request和Response
18 Koa实现原理-处理Context中的代理别名
用object.definepro.../proxy
19 Koa实现原理-设置和发送body数据
20 Koa实现原理-处理body数据格式