高级node—koa(#### koa框架介绍 https://koa.bootcss.com/#)

>koa的出现的历史背景

**nodejs是一个异步的世界,官方API支持的都是callback形式的异步编程模型,这会带来许多问题,例如:callback嵌套问题 2.异步函数中可能同步调用callback返回数据,带来不一致性。为了解决以上问题koa出现了。**
    
>koa--基于nodejs平台的下一代web开发框架。
koa是由express原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的web框架。使用koa编写web应用,可以免除重复繁琐的回调函数嵌套,并极大的提升错误处理的效率。koa不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写web应用变得得心应手。**开发思路和express差不多,最大的特点是可以避免异步嵌套。**
>安装
```
npm i koa -S
```
>使用
```
const Koa = require('koa');
const app = new Koa();
//配置中间件 
app.use(async (ctx,next) => {
    ctx.body = 'hello koa2'
})
app.listen(3000,()=>{
    console.log("服务启动成功,port:3000")
})
```
>koa的中间件模式--洋葱圈模型
<html>
    <img src="https://note.youdao.com/yws/public/resource/6c5f89eeace2d764348d174ccbfc5dee/xmlnote/0E12A2CE9CF0415798219945E1009F17/30723" width="500" style="margin:0 auto;display:block;"/>
</html>
```
const Koa = require('koa');
const app = new Koa();
const router = require('koa-router')();
const fs = require('fs');
const path = require('path');
app.use(async (ctx,next) => {
    let startTime = new Date().getTime();
    console.log("洋葱第一层开始");
    await next();
    let endTime = new Date().getTime();
    let timer = endTime - startTime;
    // console.log(ctx.path)  /api/add-post
    
    //ctx.request.method  ctx.response.status timer
    let filePath = `${ctx.path}-${ctx.request.method}-${ctx.response.status}-${timer}.log`;
    fs.writeFileSync(process.cwd()+filePath,`耗时${timer}`,'utf-8');
    console.log("洋葱第一层结束");
})
app.use(async (ctx,next) => {
    console.log("洋葱第二层开始");
    await next();
    console.log("洋葱第二层结束")
})
app.use(async (ctx,next) => {
    console.log("洋葱第三层开始");
    console.log("洋葱第三层结束")
    await next()
})
```
>koa常用的中间件
**1.koa-bodyparser  接收并处理post请求传递的参数,放到req.request.body上**
```
let bodyparser = require('koa-bodyparser');
app.use(bodyparser())
```
**2.koa-static  处理静态资源**
```
let koaStatic = require('koa-static');
app.use(koaStatic(path.join(process.cwd(),'public'))
```
**3.处理路由**
```
let router = require('koa-router');



```

















猜你喜欢

转载自www.cnblogs.com/sunzeh/p/12554276.html
koa