typescript - ¿Cómo usar inversify js junto con overnight js?
Estoy jugando con expressJS y estoy especialmente interesado en averiguar cómo configurar una clase de servidor. Actualmente he escrito esto (cosas de prueba):
export class ApplicationServer extends Server {
constructor(public config: IServerConfig) {
super(config.enableLogging);
this.app.use(express.json());
this.app.use(express.urlencoded({extended: true}));
this.setUpControllers();
}
private setUpControllers(): void {
super.addControllers([...controllers].map( (controller) => new controller()));
}
public async start(): Promise<void> {
this.app.get(
'*',
(_: express.Request, res: express.Response) => {
res.send(`Server started on port: ${this.config.port}`);
}
);
if (this.config.enableLogging) {
this.app.listen(
this.config.port,
() => Logger.Imp(`Server is listening on port: ${this.config.port}`)
);
}
}
}
Luego comencé a configurar DI con la ayuda de inversityJS, pero me encontré con el problema de la función setUpControllers que instancia mediante mapeo los controladores disponibles. Entiendo que debería gestionarse a través de un contenedor DI especial y ya he configurado uno, pero lo que aún no entiendo es cómo gestionar la lógica de instanciación aquí.
Agradecería tu ayuda.
EDITAR :
Acabo de encontrar esto: https://github.com/inversify/inversify-express-utils
Parece que es una librería utilizable, pero ¿significa eso que tengo que deshacerme de overnightJS en mi código? Además, no estoy seguro de si la librería todavía está activa... ¿está soportada? No parece que se use mucho. Pero no entiendo cómo es posible construir una aplicación sin el DI hoy en día...
Respuesta #1
No estoy muy familiarizado con inversify, pero no podrías usarlo con el constructor de Server. Podrías crear otra clase envoltorio alrededor de Server. Ahí, importa la clase server, instáncialo y llama a server.start() dentro de la clase que está usando inversify.
Respuesta #2
Hola, soy el creador de OvernightJS. No, ya no estoy manteniendo esta librería. He evolucionado más allá de la programación orientada a objetos. Por favor, consulta express-generator-typescript si querías ver un ejemplo de programación procedural moderna con express.