Node.js 向Koa2中的上下文对象添加帮助器方法的最佳方法
我想向传递给控制器的上下文对象添加方法,如Node.js 向Koa2中的上下文对象添加帮助器方法的最佳方法,node.js,namespaces,koa,koa2,Node.js,Namespaces,Koa,Koa2,我想向传递给控制器的上下文对象添加方法,如view和json。我在一个运行于其他一切之前的中间件中执行此操作: async function(ctx, next){ ctx.view = view.bind(ctx); ctx.json = json.bind(ctx); await next() ctx.renderer.render(); } 这些方法设置一些中间件解释的常规配置对象(渲染器),然后通过设置正确的ctx.body渲染出实际响应。这使我可以轻松地切换模板语
view
和json
。我在一个运行于其他一切之前的中间件中执行此操作:
async function(ctx, next){
ctx.view = view.bind(ctx);
ctx.json = json.bind(ctx);
await next()
ctx.renderer.render();
}
这些方法设置一些中间件解释的常规配置对象(渲染器),然后通过设置正确的ctx.body
渲染出实际响应。这使我可以轻松地切换模板语言,并可以轻松地将API和模板请求结合起来
除非它不工作,因为在wait next()
之后,ctx.renderer
是默认的,而不是由控制器设置的。我怀疑这是一个名称空间的问题,但我不确定它来自哪里
将函数附加到可以引用上下文而不传递给上下文的上下文的最佳做法是什么?好的,我只是错过了它,文档位于repo内部,并且没有托管,这使得它们很难导航
TL;DR:使用app.context
访问上下文原型。在那里添加函数会将它们附加到上下文对象,并允许您从内部使用this
来访问它