Я играю с expressJS и особенно заинтересован в выяснении, как настроить класс сервера. В настоящее время я написал это (игрушка):
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}`)
);
}
}
}
Затем я начал настраивать DI с помощью инверсии JS, но столкнулся с проблемой с функцией setUpControllers
, которая отображает доступные контроллеры. Я понимаю, что этим нужно управлять через специальный DI-контейнер, и я его уже настроил, но я пока не понимаю, как управлять здесь экземплярами c.
Буду признателен за вашу помощь .
РЕДАКТИРОВАТЬ:
Я только что нашел это: https://github.com/inversify/inversify-express-utils
Похоже, что это полезная библиотека, но значит ли это, что у меня есть избавиться от ночи JS в моем коде? Кроме того, я не уверен, что библиотека еще жива и работает ... поддерживается ли она? Не похоже, что он используется много. Но я не понимаю, как сейчас можно создать приложение без DI ...