跳转内容

开始

unioc 是一个统一的 IoC (控制反转) 框架,使用 TypeScript 编写,旨在实现 TS 生态 IoC 框架的大一统。只需要一个简单的插件系统就接入任何TS生态的IoC框架(如Nest.jsMidway),实现生态共用。

项目架构

目前,unioc仍然在积极开发中,以下是unioc核心后端部分架构图:

下面是unioc后端部分架构图:

安装

通过包管理器安装 unioc

bash
# 使用 npm
npm install unioc

# 使用 yarn
yarn add unioc

# 使用 pnpm
pnpm add unioc

基本使用

创建基础应用

以下是一个简单的 Express 应用示例:

ts
import { ExpressApp } from 'unioc/web-express'

async function bootstrap() {
  // 创建一个 Express 应用
  const app = await new ExpressApp()

  // 运行这个应用
  await app.run(3000)
}

bootstrap()

集成 Nest.js

如果您已有 Nest.js 项目,可以轻松迁移到 unioc

ts
import process from 'node:process'
import { NestJS } from 'unioc/adapter-nestjs'
import { ExpressApp } from 'unioc/web-express'
import { AppModule } from './app.module'

async function bootstrap() {
  // 创建一个 Express 应用
  const app = await new ExpressApp()

  // 使用 NestJS 适配器,并导入您的程序主模块
  app.use(NestJS, {
    imports: [AppModule],
  })

  // 运行这个应用
  await app.run(process.env.PORT || 3000)
}

bootstrap()

统一的装饰器

unioc 提供了同时兼容 legacy 和 stage3 两种环境的装饰器工厂:

ts
import { defineClassDecorator } from 'unioc/decorator'

function MyClassDecorator() {
  return defineClassDecorator({
    onClassDecorate(target) {
      // 实现您的逻辑
    }
  })
}

@MyClassDecorator()
class MyClass {}

插件系统

unioc 提供了一个类似 rollup 的插件系统,可以完整控制应用的启动、运行时和销毁过程。

下一步

NOTE

unioc 正在积极开发中,如有任何问题或建议,欢迎通过 GitHub IssuesDiscord 与我们联系。

贡献者

页面历史