框架扩展方法

抛开 eggjs 对 koa 的 application/context/request/response 的扩展点,midway 在 IoC 方面也做了一些扩展。

Application 扩展

具体接口见 API 文档框架扩展方法 - 图1

baseDir

由于 typescript 的关系,midway 的 app.baseDir 在开发时期指向了 /src 目录,而在构建之后部署阶段指向了 /dist 目录。

appDir

针对 baseDir 修改的情况,我们引入了一个新的 app.appDir 属性,用于指向应用根目录。

applicationContext

app.applicationContext 用于全局作用域的 IoC 容器,所有的单例对象都存放于该属性,可以从中获取到单例对象。

  1. await app.applicationContext.getAsync('xxx')

pluginContext

插件容器,用于存在现有的所有挂载在 app 上的插件实例。

  1. await app.pluginContext.getAsync('插件名')

Context 扩展

requestContext

针对请求作用域的情况,我们在 context 对象上扩展了一个 requestContext 属性。

applicationContext 相同,也是 IoC 容器,用于存放一次请求链路上的对象,当请求结束后,该容器会被清空。

  1. await ctx.requestContext.getAsync('xxx')