typescript - 如何将分离的 Koa-Router 与 Typescript 结合起来

标签 typescript export koa koa-router code-separation

我决定按用途拆分我的路由器,所以它们看起来像这样:

routers/homeRouter.ts

import * as Router from 'koa-router';

const router: Router = new Router();

router
    .get('/', async (ctx, next) => {
        ctx.body = 'hello world';
    });

export = router;

routers/userRouter.ts

import * as Router from 'koa-router';
import UserController = require('../controller/userController');

const router: Router = new Router(
    {
        prefix: 'users'
    }
);

var userController = new UserController();

router
    .post('/user/:email/:password', userController.signUp);

export = router;

有了这个,我的 app.ts 必须像这样一个一个地导入每个路由器:

app.ts

import * as Koa from 'koa';
import * as homeRouter from './routers/homeRouter';
import * as userRouter from './routers/userRouter';
const app: Koa = new Koa();
app
    .use(homeRouter.routes())
    .use(homeRouter.allowedMethods());
app
    .use(userRouter.routes())
    .use(userRouter.allowedMethods());
app.listen(3000);

但我想要的是:

app.ts

import * as Koa from 'koa';
import * as routers from './routers';
const app: Koa = new Koa();
app
    .use(routers.routes())
    .use(routers.allowedMethods());
app.listen(3000);

我不知道如何导出路由器来实现这一点。谁能帮忙?

最佳答案

你可以有这样的东西:

userRouter.ts

import * as Router from 'koa-router';

const router = new Router();
router.get('/', list);

...

export default router.routes();

routes.ts

import * as Router from 'koa-router';


import UserRouter from './userRouter';
import HomeRouter from './homeRouter';

const apiRouter = new Router({ prefix: '/api'});
apiRouter.use('/users', UserRouter);
apiRouter.use('/home', HomeRouter);

export default apiRouter.routes();

您可以像您所做的那样分别实现每个路由器,然后生成一个包含所有路由器的新路由器。然后您可以将其包含在您的 app.ts 文件中。

关于typescript - 如何将分离的 Koa-Router 与 Typescript 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754169/

相关文章:

javascript - Typescript/Javascript - 使用 new String() 和 s = '' 声明变量

java - 如何将 JAR 文件捆绑到 Mac 应用程序包中

node.js - 带有 iojs、koa 和 yield 的 node-sqlite3

c# - 在 C# 中导出到 Word 文档

javascript - 如何在KOA中编写公共(public)模块?

node.js - 是否在 Mongoose 良好实践之上使用 Joi 进行验证?

typescript - 如何忽略对象传播中的字段?

javascript - 使用 Typescript 中的条件对象过滤嵌套数组的数组

typescript - 预期对象是一种标量可观察对象,但它是可观察对象

PHP Parse.com 将表格导出为 CSV 文件