Nexus IoC is a powerful and flexible Inversion of Control (IoC) container for TypeScript applications. Inspired by Angular and NestJS, it leverages decorators to provide a simple and efficient way to manage dependencies and modules.
- Modular Architecture: Easily create and manage modules.
- Dependency Injection: Use decorators to inject dependencies into your classes.
- Lifecycle Management: Manage the lifecycle of your components seamlessly.
- Asynchronous Module Loading: Load modules asynchronously for improved performance.
npm install nexus-ioc reflect-metadata
Create a module and a provider using decorators.
import { NsModule, Injectable, Inject } from 'nexus-ioc';
@Injectable()
class DependencyService {
public readonly name = 'World';
}
@Injectable()
export class AppService {
constructor(
@Inject(DependencyService)
private readonly dependencyService: DependencyService,
) {
}
getHello(): string {
return `Hello ${this.dependencyService.name}!`;
}
}
@NsModule({
providers: [AppService, DependencyService],
})
export class AppModule {}
Create and bootstrap your application.
import { NexusApplicationsBrowser } from 'nexus-ioc/dist/server';
import { AppModule, AppService } from './app.module';
async function bootstrap() {
const app = await NexusApplicationsBrowser
.create(AppModule)
.bootstrap();
const appService = app.get<AppService>(AppService);
console.log(appService?.getHello());
}
bootstrap();
This project is licensed under the MIT License. See the LICENSE file for details.
Isqanderm (Aleksandr Melnik) - LinkedIn
Contributions are welcome! Please open an issue or submit a pull request.
Special thanks to the developers of Angular and NestJS for the inspiration.
For more detailed documentation, please visit the Wiki.