美文网首页Node.js
Node.js Koa框架之Response/Request 委

Node.js Koa框架之Response/Request 委

作者: Qingelin | 来源:发表于2021-11-02 20:41 被阅读0次

    目录

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

    相关文章

      网友评论

        本文标题:Node.js Koa框架之Response/Request 委

        本文链接:https://www.haomeiwen.com/subject/sbjfzltx.html