首页 > Web开发 > 详细

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

时间:2020-03-23 19:52:24      阅读:89      评论:0      收藏:0      [点我收藏+]

>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‘);



```

















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

原文:https://www.cnblogs.com/sunzeh/p/12554276.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!