Один файл маршрутизатора, который управляет всеми маршрутизаторами в папке - PullRequest
0 голосов
/ 25 мая 2018

Я создаю папку с именем 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 есть идеи?

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете автоматически загружать все ваши файлы маршрутизации в случае, если у вас есть все файлы маршрутизатора в одном каталоге.Вы можете сделать это следующим образом:

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());
    }
});

Если файлы вашего маршрутизатора находятся в разных каталогах и вам нужно явно указать каждый из них, вы можете просто переместить логику создания маршрутизатора в отдельный модуль.

...