【问题标题】:Single router file that manages all the routers in a folder管理文件夹中所有路由器的单个路由器文件
【发布时间】:2018-05-25 10:44:01
【问题描述】:

我创建了一个叫router的文件夹,里面有很多模块,比如一个叫home.js的模块

  const router = require('koa-router')()
  router
  .get('/', async ( ctx )=>{})
  .get('/d', async ( ctx )=>{})
  module.exports = router

并且在索引文件中app.js

  const Koa = require('koa')
  const app = new Koa()
  const router = new Router()
  const home = require('./router/home')
  router.use('/', home.routes())
  const help = require('./router/help')
  router.use('/help', help.routes())
  const ask = require('./router/ask')
  router.use('/ask', ask.routes())
  const user = require('./router/user')
  router.use('/user', user.routes())
  //more router.use
  app.use(router.routes()).use(router.allowedMethods())

而且我不希望app.js中有这么多代码,所以我想将所有路由器需要移动到一个文件中,例如controller.js,然后app.js只需要这个文件controller.js ,有什么想法吗?

【问题讨论】:

    标签: javascript node.js koa koa2


    【解决方案1】:

    如果您在一个目录下拥有所有路由器文件,您可以自动加载所有路由文件。你可以用这种方法做到这一点:

    fs.readdirSync(__dirname + '/src/routes').forEach((routerFile) => {
        if (routerFile.substr(-3) === '.js') {
            let route = require('./dist/routes/' + routerFile);
            router.use(route.path, route.router.routes(), route.router.allowedMethods());
        }
    });
    

    如果您的路由器文件位于不同的目录下,并且您需要明确指定每个文件,您可以将您的路由器创建逻辑移动到一个单独的模块中。

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多