• koa框架(一)


    koa简介

    中文官网

    功能

    • 提供基础的HTTP应用服务

    核心概念

    • 应用(Koa Application
    • 上下文 (Context
    • 请求(Request
    • 响应(Response

    在这里插入图片描述

    特点

    • 轻量/简洁
    • async/await
    • 丰富的中间件

    koa使用

    安装

    Koa需要 node v7.6.0或更高版本来支持ES2015、异步方法

    npm install -S koa
    
    • 1

    常用api

    • app.use

      • 为应用添加指定的中间件
    • app.listen

    • 如下为一个绑定3000端口的简单 Koa 应用,其创建并返回了一个 HTTP 服务器,为 Server#listen() 传递指定参数(参数的详细文档请查看nodejs.org)。

    	const Koa = require('koa')
    	const app = new Koa()
    	app.listen(3000)
    
    • 1
    • 2
    • 3
    • app.on
      • 事件侦听

    koa中间件

    • koa的工作原理
      • 执行的顺序:顺序执行
      • 回调的顺序:反向执行
      • 先进后出

    在这里插入图片描述

    const Koa = require('koa')
    const app = new Koa()
    
    const middleware = function async (ctx,  next) {
      console.log('this is a widdleware')
      console.log(ctx.request.path)
      next()
    }
    const middleware1 = function async (ctx,  next) {
      console.log('this is a widdleware1')
      console.log(ctx.request.path)
      next()
      console.log(1111111)
    }
    const middleware2 = function async (ctx,  next) {
      console.log('this is a widdleware2')
      console.log(ctx.request.path)
      next()
      console.log(22222)
    }
    const middleware3 = function async (ctx,  next) {
      console.log('this is a widdleware3')
      console.log(ctx.request.path)
      next()
      console.log(3333)
    }
    
    app.use(middleware)
    app.use(middleware1)
    app.use(middleware2)
    app.use(middleware3)
    
    
    app.listen(3000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    打印

    this is a widdleware
    /
    this is a widdleware1
    /
    this is a widdleware2
    /
    this is a widdleware3
    /
    3333
    22222
    1111111
    this is a widdleware
    /favicon.ico
    this is a widdleware1
    /favicon.ico
    this is a widdleware2
    /favicon.ico
    this is a widdleware3
    /favicon.ico
    3333
    22222
    1111111
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    Koa 的中间件通过一种更加传统(您也许会很熟悉)的方式进行级联,摒弃了以往 node 频繁的回调函数造成的复杂代码逻辑。 然而,使用异步函数,我们可以实现"真正" 的中间件。与之不同,当执行到 yield next 语句时,Koa 暂停了该中间件,继续执行下一个符合请求的中间件(‘downstrem’),然后控制权再逐级返回给上层中间件(‘upstream’)。

    常用插件

    路由

    koa-router

    • 安装
    npm install -S koa-router
    
    • 1
    • 使用
    const Koa = require('koa')
    const Router = require('koa-router')
    const app = new Koa()
    const router = new Router()
    
    router.get('/', ctx => {
      console.log('ctx', ctx)
      ctx.body = 'Hello World'
    })
    
    // 路由定义的方法定义到koa应用中
    app.use(router.routes()).use(router.allowedMethods())
    
    app.listen(3000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    跨域处理

    @koa/cors

    • 安装
    npm install -S @koa/cors
    
    • 1
    • 使用
    const cors = require('@koa/cors')
    app.use(cors())
    
    • 1
    • 2
    压缩

    koa-compress

    静态资源

    koa-static

    • 安装
    npm install -S koa-static
    
    • 1
    • 使用
    const path = require('path')
    const staticServer = require('koa-static')
    
    app.use(staticServer(path.join(__dirname, 'static')))
    
    • 1
    • 2
    • 3
    • 4
    协议处理
    • koa-json
    • 安装
    npm install koa-json -S
    
    • 1
    • 使用
    const json = require('koa-json')
    // 请求上拼接pretty时格式化
    app.use(json({ pretty: false, param: 'pretty'}))
    
    • 1
    • 2
    • 3
    • koa-body
      • 安装
    npm install koa-body -S
    
    • 1
    • 使用
    const koabody = require('koa-body')
    app.use(koabody())
    
    • 1
    • 2
    安全
    • 鉴权方式
      • koa-session
      • koa-jwt
    • 通信头
      • koa-helmet
    日志

    koa-logger

  • 相关阅读:
    Java过滤器与拦截器的区别(一文搞懂)
    【随想】闲聊、沟通和谈判
    HTML核心(6)- 路径的写法
    蓝桥等考Python组别十级008
    Linux安装JDK
    Git相关操作
    一个用于翻译 CSV 文件的 Python 脚本,适用于将英文内容批量翻译成中文(或其他语言),并解决文件编码导致的中文乱码和无法翻译的问题。
    【R1CS to QAP】
    【JUC系列-11】深入理解LinkedBlockingQueue的底层实现
    i.MX6ULL驱动开发 | 36 - 注册spilcd为framebuffer设备并使用lvgl测试
  • 原文地址:https://blog.csdn.net/weixin_44757417/article/details/126206612