Koa基础开篇(一)

一、 介绍

本文开始分析koa源码的开篇,所以先来了解一下小案例

二、小案例

1、输出helloworld

const Koa = require('koa')
const static = require('koa-static')
const app = new Koa()
app.use(async(ctx) => {
    ctx.body = 'hello world'
})
app.listen(3000)

2、输出静态资源

const Koa = require('koa')
const static = require('koa-static')
const app = new Koa()
app.use(static(__dirname + '/public'))
app.listen(3000)

三、项目结构

1、 使用mddir工具生成项目目录

  • npm install mddir -D
  • npx mddir

2、项目目录

|-- koa
    |-- AUTHORS                     # 奉献者信息
    |-- CODE_OF_CONDUCT.md          # 行为准则规范
    |-- History.md                  # 历史版本
    |-- LICENSE                     # 许可
    |-- package.json                # 项目描述信息
    |-- Readme.md                   # README                            
    |-- benchmarks                  # 基准测试                    
    |-- docs                        # 文档说明
    |-- examples                    # 示例代码目录
    |-- lib                         # 库目录,核心代码
    |   |-- application.js          # 应用库      
    |   |-- context.js              # 上下文库
    |   |-- request.js              # request库
    |   |-- response.js             # response库
    |-- test                        # 测试目录    

四、洋葱模型

在这里插入图片描述
koa2的demo:

const Koa = require('koa');
const app = new Koa();

// x-response-time
app.use(async (ctx, next) => {
    const start = Date.now();                           
    await next();                                                
    const ms = Date.now() - start;                  
    ctx.set('X-Response-Time', `${ms}ms`);  
//logger
app.use(async (ctx, next) => {
    const start = Date.now();                           
    await next();                                                    
    const ms = Date.now() - start;                    
    console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);  
});
// response
app.use(async ctx => { 
    ctx.body = 'Hello Wolrd';                                 
});
app.listen(3000);

/**
 *  执行过程:
 *  1. 创建一个跟踪响应时间的 时间戳
 *  2.  等待下一个中间件执行完毕
 *  3. 创建另一个logger的持续时间
 *  4. 等待下一个中间件执行完毕
 *  5. 将响应体设置为 'hello world'
 *  6. 计算出logger的持续时间
 *  7. 输出logger
 *  8. 计算响应的持续是按
 *  9. 将 x-response-time 响应头设置好
 *  10. 交给koa处理
 */       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值