框架frame:

1.框架的作用:

封装原生代码的API;规范流程和格式;让开发人员更加关注与业务代码,提高开发效率。

2.框架frame和lib库的区别:
框架是唯一的,库可以共存;框架关注全流程,库关注单个功能。

koa2

介绍:koa2是nodejs web server 框架;

 通过async/await语法高效编写web server;

koa2的中间件机制,能合理拆分业务代码。

官网和文档:Koa (koajs) — 基于 Node.js 平台的下一代 web 开发框架 | Koajs 中文文档

安装koa2: npm i koa –save (我们要安装包时,养成去npmjs.com搜索的好习惯)

koa2环境搭建:

实际项目,不会从0搭建koa2环境,我们可以使用脚手架koa-generator创建koa2项目。(类比vue-cli),因此我们还需安装脚手架koa-generator :npm i koa-generator;

通过 控制台输入 koa2 test4(文件名) 创建koa2项目;

通过 npm run dev 启动项目(如果报错如下,则可能是Nodejs的版本太高,可以卸载原来的nodejs,下载低版本的nodejs)

koa2处理http请求

如何接收数据和返回数据:(模拟留言板的liangge)

const router = require("koa-router")()
router.prefix("/api")// koa2处理http请求router.get('/list',async ctx => {// 获取queryStringconst query = ctx.query;console.log('query',query)// 返回的responsectx.body = {errno: 0,data: [{user: "张三", content: "今天天气真好"},{user: "李四", content: "今天天气还行"},{user: "王五", content: "今天天气不好"},]}
})router.post('/create', async ctx => {const query = ctx.query;console.log(query);// 获取request发送过来的数据const body = ctx.request.body;console.log("body",body)ctx.body = {errno: 0,message: "请求已经收到啦"}
})module.exports = router

中间件

1)什么是中间件? 为何使用中间件?

中间件是什么:

中间件是一个流程上,独立的业务模块;

可扩展,可插拔;

类似于工厂流水线。koa2框架-编程知识网

为何使用中间件:

使用中间件拆分业务模块,使代码清晰;

统一使用中间件,使得各业务代码都规范标准;

扩展性好,易添加,易删除。

2)koa2中间件

koa2业务代码都是中间件;

每个中间件都是一个async函数,async函数的第一个参数都是ctx,第二个参数是next

所有的app.use(…)都是中间件;(所有的请求都会经过使用app.use注册的中间件)

路由也是中间件(只不过限制了url规则,只有满足路由规则的才会经过路由中间件)

中间件机制:(一个http请求会依照下面的顺序经过中间件)

koa2框架-编程知识网

中间件机制是koa2的精髓;

3)模拟登录验证功能(演示怎么使用中间件)

1.加入所有的接口(路由)都需要登录校验:

2.假如只有一部分接口,需要登录校验

koa2洋葱圈模型:
koa2框架-编程知识网

 洋葱圈模型和中间件模型的关系(两者要分开来看,不要混在一起):

中间件机制:业务模块的划分;

洋葱圈模型:中间件的执行机制;