koa如何在任何地方获取当前上下文实例(ctx)?
应用入口
import * as Koa from 'koa';
import * as Router from 'koa-router';
import HomeController from './home-controller'
const app = new Koa();
const router = new Router();
router.get('/', HomeController.hello )
controller
export default class HomeController {
static hello(ctx) {
//这里是通过传参获取到当前上下文实例ctx
return 'hello';
}
}
上面的ctx
是通过传参获取到的
如果我不想通过传参的方式获取ctx
,而是在应用任何地方
都能获取到ctx
,应该如何做呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在应用的任何地方都能获取到
ctx
是不现实的,因为ctx
是一个依赖当前请求而创造的上下文变量。-----------更新-----------
根据楼主评论里的需求描述,我这里提供一个思路:
ctx
参数,并令this.ctx = ctx
;ctx
变量注入 path 对应的处理函数中,此处可以进行具体的 controller 子类的实例化,如此 controller 中将能够通过this.ctx
访问ctx
变量。ctx
。你不会想放到global吧?不建议