bugfix> javascript > 投稿

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 などの1つのファイルに移動したい 、次に app.js このファイル controller.js のみが必要です 、 何か案は?

回答 1 件
  • 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());
        }
    });
    
    

    ルーターファイルが異なるディレクトリにあり、それぞれを明示的に指定する必要がある場合は、ルーター作成ロジックを別のモジュールに移動するだけです。

あなたの答え