手记

【学习打卡】第八天 Node.js+Koa2+MySQL 打造前后端分离精品项目《旧岛》

第一模块


学习课程名称:Node.js+Koa2+MySQL 打造前后端分离精品项目《旧岛》
章节名称:【深入理解KOA】Koa2的那点事儿与异步编程模型
讲师姓名:7七月


##第二模块

课程内容概述

  1. node一小步,前端一大步
  2. KOA的精简特性与二次开发必要性分析
  3. 模块加载、ES、TS、Babel浅析
  4. KOA的中间件
  5. 洋葱模型
  6. 强制Promise
  7. 深入理解async和await
  8. 为什么一定要保证洋葱模型?

第三模块


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挂载的方式来进行。


第四模块



0人推荐
随时随地看视频
慕课网APP