typescript 如何使用inversify js沿着过夜js?

ufj5ltwl  于 2023-03-24  发布在  TypeScript
关注(0)|答案(2)|浏览(160)

我正在玩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}`)
            );
        }
    }
}

然后我开始在inversityJS的帮助下设置DI,但遇到了setUpControllers函数的问题,该函数Map示例化可用的控制器。我知道它应该通过一个特殊的DI容器进行管理,我已经设置了一个,但我还不明白如何管理这里的示例化逻辑。
我会很感激你的帮助。
编辑:
我刚发现这个https://github.com/inversify/inversify-express-utils
看起来这是一个可用的库,但这是否意味着我必须在代码中摆脱overnightJS?最重要的是,我不确定这个库是否还活着......它是否被支持?它看起来不像是被使用了很多。但我不知道现在如何在没有DI的情况下构建应用程序......

gr8qqesn

gr8qqesn1#

我对inversify不是很熟悉,但是你不能将它与Server构造函数一起使用。你可以在Server周围创建另一个 Package 器类。在那里,导入Server类,示例化它,并在使用inversify的类中调用server.start()。

mznpcxlj

mznpcxlj2#

你好,我是OvernightJS的创建者。不,我不再维护这个库了。我已经超越了面向对象编程。如果你想看一个用express进行现代过程编程的例子,请看express-generator-typescript

相关问题