Uma 对象

框架向外暴露了 Uma 对象,方便在项目中随时调用

API

uma.env

当前运行环境,可以在入口文件中定义

// app.ts
import Uma from '@umajs/core'
import { Router } from '@umajs/router'

const uma = Uma.instance({
  Router,
  ROOT: __dirname,
  env: process.argv.indexOf('production') > -1 ? 'production' : 'development',
})

uma.start(8058)
1
2
3
4
5
6
7
8
9
10
11

uma.config

当前项目正在使用的配置信息,对 config 目录下的配置进行处理后得到

{
  "plugin": {
    "logger": true,
    "model": true
  },
  "status": {
    "_404": "[object, function]"
  }
}
1
2
3
4
5
6
7
8
9

uma.options

初始化Uma时传入的参数,参数包括

type TUmaOption = {
  // 路由
  Router: Function
  // 代码根路径,用于加载代码
  ROOT: string
  // 运行环境
  env?: 'development' | 'production' | string
  // 严格目录,非严格目录只有 'plugins' 是保留目录,严格目录还有 'controller'、'service'
  strictDir?: boolean
  // 配置文件夹路径
  configPath?: string
  proxy?: boolean
  subdomainOffset?: number
  jsonpBody?: TJsonpBody
  // 自带 koa-body 时的配置,不配置时 koa-body 中间件不生效
  bodyParser?: bodyParser.IKoaBodyOptions
  createServer?: (
    cb: (
      req: IncomingMessage | Http2ServerRequest,
      res: ServerResponse | Http2ServerResponse
    ) => void
  ) => Server
  beforeLoad?: (uma: Uma) => void
  afterLoaded?: (uma: Uma) => void
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

uma.app

Koa Application对象的实例,初始化时生成

uma.start(port: number = 8058)

Uma启动方法,需要在初始化时调用,默认端口是 8058

// app.ts
// ===> 调用start方法启动项目
uma.start(8058)
1
2
3

beforeLoad, afterLoad

服务启动前后的钩子函数,传入当前 uma 实例

const uma = Uma.instance({
  ROOT: __dirname,
  beforeLoad(uma: Uma) {
    // 服务开始启动
  },
  afterLoad(uma: Uma) {
    // 服务启动完成
  },
})
1
2
3
4
5
6
7
8
9

静态方法

instance

获取/实例化 Uma,实例化必须传参,获取实例化后的 Uma 不用传参

    static instance(options?: TUmaOption): Uma;
1

获取运行环境

    static get env(): string;
1

获取 app

    static get app(): Koa<Koa.DefaultState, IContext>;
1

获取 server

    static get server(): http.Server | https.Server;
1

options

获取运行 Uma 的参数

    static get options(): TUmaOption;
1

config

获取所有 Uma 的配置

    static get config(): TConfig;
1

获取插件配置

    static get pluginConfig(): {
        [pluginName: string]: boolean | import("../types/TPluginConfig").TPluginConfig;
    };
1
2
3

获取生效的 plugin key

    static get pluginKeys(): any[];
1

或者某个插件的参数

    static pluginOptions(pluginName: string): object;
1

context

获取 context,可以对 context 进行扩展等。实例化之后就是我们使用的 ctx

    static get context(): Koa.BaseContext & IContext;
1

controllersInfo

获取实例化之后的 controller 信息,包括 controller、route 等

    static get controllersInfo(): IterableIterator<import("..").TControllerInfo>;
1