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对象的其他属性实现委托模式也类似

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容