现在我们已经实现了request.js、response.js,获取到了request、response对象和他们的封装的方法,然后我们开始实现context.js,context的作用就是将request、response对象挂载到ctx的上面,让koa实例和代码能方便的使用到request、response对象中的方法。
koa实例和代码
现在我们创建context.js文件,输入如下代码:
letproto={};
functiondelegateSet(property,name){
proto.__defineSetter__(name,function(val){
this[property][name]=val;
});
}
functiondelegateGet(property,name){
proto.__defineGetter__(name,function(){
returnthis[property][name];
});
}
letrequestSet=[];
letrequestGet=['query'];
letresponseSet=['body','status'];
letresponseGet=responseSet;
requestSet.forEach(ele=>{
delegateSet('request',ele);
});
koa如何挂载
requestGet.forEach(ele=>{
delegateGet('request',ele);
});
responseSet.forEach(ele=>{
delegateSet('response',ele);
});
responseGet.forEach(ele=>{
delegateGet('response',ele);
});
module.exports=proto;
总之,context.js文件主要是对常用的request和response方法进行挂载和代理,通过context.query直接代理了context.request.query,context.body和context.status代理了context.response.body与context.response.status。而context.request,context.response则会在application.jskoa中挂载。