コントローラに渡されるコンテキストオブジェクトにview
とjson
などのメソッドを追加したいと思います。私は他のすべての前に実行されるミドルウェアで次の操作を行います。Koa2のコンテキストオブジェクトにヘルパーメソッドを追加する最も良い方法
async function(ctx, next){
ctx.view = view.bind(ctx);
ctx.json = json.bind(ctx);
await next()
ctx.renderer.render();
}
これらのメソッドは、ミドルウェアが解釈して、正しいctx.body
を設定することにより、実際の応答をレンダリングするいくつかの従来の構成オブジェクト(レンダラー)を設定します。これにより、テンプレート言語を簡単に切り替えることができ、APIとテンプレート要求を結合するのが簡単になりました。
await next()
の後には、コントローラによって設定されたものではなく、ctx.renderer
がデフォルトのものであるため、動作しません。私はそれが名前空間の問題だと思うが、どこから来たのか分からない。
コンテキストを渡すことなくコンテキストを参照できるコンテキストに関数を割り当てるのがベストプラクティスですか?