Как использовать inversify js вместе с ночь js? - PullRequest
0 голосов
/ 06 апреля 2020

Я играю с 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 ...

1 Ответ

0 голосов
/ 09 апреля 2020

Я не очень знаком с Inversify, но вы не сможете использовать его с конструктором сервера. Вы можете создать еще один класс-оболочку для сервера. Там импортируйте класс сервера, создайте его экземпляр и вызовите server.start () внутри класса, который использует inversify.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...