1

我想向传递给我的控制器的上下文对象添加诸如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默认的,而不是控制器设置的。我怀疑这是一个命名空间问题,但我不确定它来自哪里。

将函数附加到可以引用上下文而不将其传递给它们的上下文的最佳实践是什么?

4

1 回答 1

4

好的,它我刚刚错过的文档中,文档在回购中并且没有托管,这使得它们难以导航。

TL;DR:用于app.context访问上下文原型。在那里添加函数会将它们附加到上下文对象,并允许您this从内部使用来访问它。

于 2017-08-20T13:35:54.177 回答