框架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)什么是中间件? 为何使用中间件?
中间件是什么:
中间件是一个流程上,独立的业务模块;
可扩展,可插拔;
为何使用中间件:
使用中间件拆分业务模块,使代码清晰;
统一使用中间件,使得各业务代码都规范标准;
扩展性好,易添加,易删除。
2)koa2中间件
koa2业务代码都是中间件;
每个中间件都是一个async函数,async函数的第一个参数都是ctx,第二个参数是next
所有的app.use(…)都是中间件;(所有的请求都会经过使用app.use注册的中间件)
路由也是中间件(只不过限制了url规则,只有满足路由规则的才会经过路由中间件)
中间件机制:(一个http请求会依照下面的顺序经过中间件)
中间件机制是koa2的精髓;
3)模拟登录验证功能(演示怎么使用中间件)
1.加入所有的接口(路由)都需要登录校验:
2.假如只有一部分接口,需要登录校验
洋葱圈模型和中间件模型的关系(两者要分开来看,不要混在一起):
中间件机制:业务模块的划分;
洋葱圈模型:中间件的执行机制;