现在的位置: 首页 > web前端 > 正文

koa2模块代码

2020年07月06日 web前端 ⁄ 共 953字 ⁄ 字号 评论关闭

  在我们编写koa代码的时候,会对body进行多次的读取和修改,所以真正返回浏览器信息的操作是在application.js里进行封装和操作。


  koa2写入以下代码:


  leturl=require('url');


  module.exports={


  getquery(){


  returnurl.parse(this.req.url,true).query;


  }


  };


  这样当你在koa实例里使用ctx.query的时候,就会返回url.parse(this.req.url,true).query的值。看源码可知,基于getter和setter,在request.js里还封装了header、url、origin、path等方法,都是对原生的request上用getter和setter进行了封装,笔者不再这里一一实现。


  koa2文件代码模块


  接下来我们实现response.js文件代码模块,它和request原理一样,也是基于getter和setter对原生response进行了封装,那我们接下来通过对常用的ctx.body和ctx.status这个两个语句当做例子简述一下如果实现koa的response的模块,我们首先创建好response.js文件,然后输入下面的代码:


  module.exports={


  getbody(){


  returnthis._body;


  },


  setbody(data){


  this._body=data;


  },


  getstatus(){


  returnthis.res.statusCode;


  },


  setstatus(statusCode){


  if(typeofstatusCode!=='number'){


  thrownewError('somethingwrong!');


  }


  this.res.statusCode=statusCode;


  }


  };


  总之,以上代码实现了对koa的status的读取和设置,读取的时候返回的是基于原生的response对象的statusCode属性,而body的读取则是对this._body进行读写和操作。这里对body进行操作并没有使用原生的this.res.end。

【上篇】
【下篇】

抱歉!评论已关闭.