框架扩展方法

框架扩展方法

抛开 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 容器,所有的单例对象都存放于该属性,可以从中获取到单例对象。

await app.applicationContext.getAsync('xxx')

pluginContext

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

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

Context 扩展

requestContext

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

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

await ctx.requestContext.getAsync('xxx')