首页 > 解决方案 > 在 TypeScript 中解析并导入所有模块后执行代码

问题描述

我将 TypeScript 用于我的 Express 应用程序。我将某些端点的注册分布在其他几个模块中。这些模块导入main.ts并注册它们(参见 参考资料depFoo.ts)。不幸的是,他们似乎没有注册,因为在执行之前app开始监听它的注册!? deppFoo.ts

TypeScript 中解决这个 Heg-Enn 问题的正确方法是什么?我可以注册一个在 TypeScript 解析所有模块后执行的回调吗?

main.ts

export const app: express.Application = express();
app.listen(3000, function () {
    console.log("App is listening on port 3000!");
});

depFoo.ts

import { app } import "./main.ts"
app.get(...);

标签: node.jstypescriptexpress

解决方案


教程对带有 express TS 的路由器样式系统进行了很好的解释。一种更简洁的方法是创建一个routes目录,其中的文件类似于

import * as express from "express";

export const register = ( app: express.Application ) => {
    app.get( "/", ( req: any, res ) => {
        res.render( "index" );
    } );
};

然后在你的主app文件中你可以使用

import * as routes from './routes'

...

const app = express()
routes.register(app)

这使您的主文件更加干净,并且您的端点更加模块化。


推荐阅读