Node.js Koa框架之Response/Request 委托

目录

  • Koa框架
  • Response 、Request 委托

1. Koa框架 —— Koa 是包含一系列中间件generator的对象,这些中间件函数会以栈的结构组成并,使用async await语法 依次执行

  • 本文的主要目的不是介绍Koa,而是想要通过Koa 的Response /Request Api来介绍委托模式,下面以实现Koa 的 Response方法的body属性来介绍:
  • 先写一个koa 中间件:
import koa from 'koa'
const app = new koa()

app.use(async (ctx,next) => {
      ctx.body = ctx.Response.body   // Expected true
})

app.listen(3000,() =>{
    console.log('正在监听3000端口:')
})
  • koa 是由大名鼎鼎的TJ 所写的框架,为什么 ctx.body === ctx.Response.body 呢?原因就是即将介绍的js 设计模式中的委托模式。

js 的委托模式:对外暴露的对象将请求委托给内部的其他对象进行处理,即上面例子中的

ctx.Response.body === ctx.body,这里就是对Response 对象的一系列操作委托给ctx,Koa 代码实现原理如下:

import koa from 'koa'
const app = new koa()

// 核心代码
app.use(async (ctx,next) => {
      Object.defineProperty(ctx,'body',{
          get(){
              return ctx.response.body
          },
          set(v){
              return ctx.response.body = v
          }
      })
})

app.listen(3000,() =>{
    console.log('正在监听3000端口:')
})

Request对象也是如此,Response对象的其他属性实现委托模式也类似

  • 参考文件:delegates - 委托模式的简单实现

你可能感兴趣的:(Node.js Koa框架之Response/Request 委托)