【金秋打卡】第7天 《Node.js+Koa2+MySQL 打造前后端分离精品项目》
2022/11/2 3:25:00
本文主要是介绍【金秋打卡】第7天 《Node.js+Koa2+MySQL 打造前后端分离精品项目》,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》
课程章节:第2章 【深入理解KOA】Koa2的那点事儿与异步编程模型
视频:2-9 为什么一定要保证洋葱模型
课程讲师: 七月
课程内容:
先说结论:如果不加async、await,KOA的中间件的执行顺讯不一定按照洋葱模型来执行
app.use((ctx, next) => { console.log(1) next() console.log(2) }) app.use(async (ctx, next) => { console.log(3) consot axios = require('axios') const res = await.get('http://www.baidu.com') next() console.log(4) }) //输出(不符合洋葱模型) 1 3 2 4
如何保证任何代码,不管多么复杂,都按照洋葱模型的顺序执行,要加上async await
app.use(async (ctx, next) => { console.log(1) await next() console.log(2) }) app.use(async (ctx, next) => { console.log(3) consot axios = require('axios') const res = await.get('http://www.baidu.com') await next() console.log(4) }) //输出(符合洋葱模型) 1 3 4 2
要在每一个中间件,调用下一个中间件的时候, next()的前边一定要加上await
第二个中间件中的结果,传递到第一个中间件,可以用return的方式。这种方式有局限性,
如果几个中间件都是自己编写的,自己可以完全掌握几个中间件的调用顺序,确实可以通过return的方式传递结果参数。
但Koa需要用到大量第三方的中间件,我们不知道第三方的中间件的执行顺序,这时就不能依靠return传递参数。
可以依靠ctx上下文,每一个中间件在执行时都会被注入ctx。
可以把第二个中间件的执行结果res保存到ctx中
在第一个中间件中用ctx拿到结果, 拿到结果的代码,应该写在next之后
app.use(async (ctx, next) => { await next() const r = ctx.r console.log(r) }) app.use(async (ctx, next) => { const axios = require('axios') const res = await axios.get('http://www.baidu.com') ctx.r = res await next() }) //输出 百度首页html源码(略)
课程收获:
七月老师先抛出来一个结论“如果不加async、await,KOA的中间件的执行顺讯不一定按照洋葱模型来执行”,然后用代码验证个结论。过程中由浅入深,又讲到了ctx上下文。这种循序渐进的方法让我理解起来更清晰透彻。
七月老师非常注重在讲编程知识的同时,讲编程思维,讲知识和知识之间的关系。编程是实践性非常强的工作,学习知识最好的方法是放到项目中。做项目的目的不是做项目,最终要做出来自己的项目,业务承载的是编程知识。明天继续刷后边的课程。
这篇关于【金秋打卡】第7天 《Node.js+Koa2+MySQL 打造前后端分离精品项目》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28Vue入门教程:从零开始搭建第一个Vue项目
- 2024-12-28Vue CLI入门指南:快速搭建Vue项目
- 2024-12-28Vue3基础知识入门教程
- 2024-12-28Vue3公共组件开发与使用入门教程
- 2024-12-28Vue CLI学习:新手入门教程
- 2024-12-28Vue CLI学习:轻松入门与实践指南
- 2024-12-28Vue3公共组件学习入门指南
- 2024-12-28Vue3公共组件学习:从入门到上手实战
- 2024-12-28Vue3学习:从入门到初级实战教程
- 2024-12-28Vue3学习:新手入门与初级教程