koa框架介绍以及核心原理实现

介绍

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

使用

  1. 安装

    npm i koa
    
  2. 使用

    // 引入 koa
    const Koa = require('koa')
    
    // 创建一个应用
    const app = new Koa()
    
    // 监听端口
    app.listen(8081, () => {
      console.log('server is running')
    })
    

context上下文对象

属性名 说明
app 当前 applicaiton 应用对象
req 原生 NodeJS 的 request 对象
request 请求对象
res 原生 NodeJS 的 response 对象
response 响应对象
state 空对象,通过中间件传递信息到视图
originaUrl 原生 NodeJS 的 request 下的 url 属性值

路由

  1. 安装

    npm i @koa/router
    
  2. 使用

    // 引入
    const Router = require('@koa/router')
    
    // 定义路由对象
    const router = new Router({
      prefix: '/user' // 定义路由前缀
    })
    
    // 定义接口
    // router.[请求方法]([请求路径], [回调函数])
    router.get('/list', (context) => {
      console.log(1)
    })
    
    // 使用
    app.use(router.routes())
    

中间件

/**
 * 创建中间件,中间件函数用于处理 http 请求、校验 token 权限、收集错误日志等
 * @params {object} context:上下文对象,对 request、response 的封装
 * @params {function} next:将当前中间件的执行权交给下一个中间件
 */
app.use((context, next) => {
  console.log(1);
  next()
  console.log(11);
})

app.use((context, next) => {
  console.log(2);
  next()
  console.log(22);
})

app.use((context, next) => {
  console.log(3);
  next()
  console.log(33);
})

/**
 * 执行顺序:1 -> 2 -> 3 -> 33 -> 22 -> 11
 * 类似事件捕获、事件冒泡
 */

核心原理实现

我自己写了一个 mini 版的 koa 框架,基本实现了 koa 框架的核心功能,主要用于了解 koa 的底层实现原理,发布在了 GitHub 上,并附带详细的解析,觉得不错欢迎 ⭐Star 。

GitHub 链接

你可能感兴趣的:(NodeJS,node.js,github,前端框架,express,前端,ecmascript,中间件)