Skip to content

Module ​

Module là các khối xây dựng cơ bản của ứng dụng Orbit. Chúng giúp tổ chức mã nguồn thành các khối chức năng gắn kết.

Tổng quan ​

Module là một lớp được trang trí bằng @Module() cung cấp metadata về cách cấu trúc ứng dụng.

typescript
import { Module } from '@galaxy-stack/orbit-core';
import { UserController } from './user.controller';
import { UserService } from './user.service';

@Module({
  controllers: [UserController],
  providers: [UserService],
})
export class UserModule {}

Tùy chọn Decorator Module ​

Thuộc tínhMô tả
importsDanh sách module để nhập
controllersController cần khởi tạo
providersProvider cần khởi tạo bởi container DI
exportsProvider có sẵn trong các module khác

Module tính năng ​

Tổ chức ứng dụng theo tính năng:

typescript
// users/user.module.ts
@Module({
  controllers: [UserController],
  providers: [UserService, UserRepository],
  exports: [UserService],
})
export class UserModule {}

// posts/post.module.ts
@Module({
  imports: [UserModule], // Nhập UserModule để sử dụng UserService
  controllers: [PostController],
  providers: [PostService],
})
export class PostModule {}

Module gốc ​

Mỗi ứng dụng có một module gốc:

typescript
@Module({
  imports: [
    ConfigModule.forRoot(),
    DatabaseModule.forRoot(),
    UserModule,
    PostModule,
  ],
})
export class AppModule {}

Module toàn cục ​

Sử dụng global: true để làm cho provider có sẵn ở mọi nơi:

typescript
@Module({
  providers: [ConfigService],
  exports: [ConfigService],
  global: true,
})
export class ConfigModule {}

Module động ​

Tạo module có thể cấu hình:

typescript
@Module({})
export class DatabaseModule {
  static forRoot(options: DatabaseOptions): DynamicModule {
    return {
      module: DatabaseModule,
      providers: [
        {
          provide: 'DATABASE_OPTIONS',
          useValue: options,
        },
        DatabaseService,
      ],
      exports: [DatabaseService],
      global: true,
    };
  }
}

Xuất lại Module ​

Xuất lại các module đã nhập:

typescript
@Module({
  imports: [CommonModule],
  exports: [CommonModule], // Xuất lại để các module nhập có thể sử dụng CommonModule
})
export class CoreModule {}

Tham chiếu xuôi ​

Xử lý các phụ thuộc vòng tròn:

typescript
import { forwardRef } from '@galaxy-stack/orbit-core';

@Module({
  imports: [forwardRef(() => PostModule)],
})
export class UserModule {}

Released under the MIT License.