我想向传递给我的控制器的上下文对象添加诸如view
和之类的方法。json
我在一个先于其他所有东西运行的中间件中执行此操作:
async function(ctx, next){
ctx.view = view.bind(ctx);
ctx.json = json.bind(ctx);
await next()
ctx.renderer.render();
}
这些方法设置了一些常规配置对象(Renderer),中间件会解释这些对象,然后通过设置正确的ctx.body
. 这让我可以轻松切换模板语言,并更轻松地组合 API 和模板请求。
除非它不起作用,因为之后await next()
是ctx.renderer
默认的,而不是控制器设置的。我怀疑这是一个命名空间问题,但我不确定它来自哪里。
将函数附加到可以引用上下文而不将其传递给它们的上下文的最佳实践是什么?