第一模块
学习课程名称:Node.js+Koa2+MySQL 打造前后端分离精品项目《旧岛》
章节名称:【深入理解KOA】Koa2的那点事儿与异步编程模型
讲师姓名:7七月
##第二模块
课程内容概述:
- node一小步,前端一大步
- KOA的精简特性与二次开发必要性分析
- 模块加载、ES、TS、Babel浅析
- KOA的中间件
- 洋葱模型
- 强制Promise
- 深入理解async和await
- 为什么一定要保证洋葱模型?
第三模块
Koa所谓的“下一代”是相对Express而言的,Koa基于异步流程控制特性,主要是用于改进Node.js开发中的回调地狱痛点。
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的Web“微”框架。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
Koa代码极度精简,是一个极轻量的优雅框架。
Koa相当于一个基于http模块进行封装的、提供中间件写法的微内核模块。Koa约定了中间件写法,使得可以完成Web应用中所有需求,但Koa并没有和任何中间件绑定在一起。
async 和 await
promise 虽然是使用 .then 链式调用,但其本质也是基于回调函数
async/await 是一种更加优雅的异步编程的写法
1.它是消灭异步回调的终极武器
2.它只是同步语法,即用同步的写法写异步的代码
常用的 JS 的模块系统:
CommonJS(后文简称 cjs)
ES module(后文简称 esm)
UMD
(AMD 现在用得比较少了,故忽略掉)
babel、TS 等编译器更加偏爱 cjs。默认情况下,代码里写的 esm 都会被 babel、TS 转成 cjs。这个原因我推测有以下几点:
cjs 出现得比 esm 更早,所以已有大量的 npm 库是基于 cjs 的(数量远高于 esm),比如 react
cjs 有着非常成熟、流行、使用率高的 runtime:Node.js,而 esm 的 runtime 目前支持非常有限(浏览器端需要高级浏览器,node 需要一些稀奇古怪的配置和修改文件后缀名)
有很多 npm 库是基于 UMD 的,UMD 兼容 cjs,但因为 esm 是静态的,UMD 无法兼容 esm
洋葱模型的重要作用
洋葱模型的先决条件:在每个中间件调用下一个中间件的时候(next()),前面一定要加上await
最后,为什么要保持这个洋葱模型呢?
因为很多时候我们在一个app里面有好多中间件,有些中间件需要依赖其他中间件的结果,那么如果没有洋葱模型就可能会出错
中间件之间的通信可以通过ctx挂载的方式来进行。
第四模块
共同学习,写下你的评论
评论加载中...
作者其他优质文章