NodeJs批量require資料夾中的所有檔案

weixin_34019929發表於2018-05-24

歡迎訪問我的個人部落格 - 全棧之巔

Q: 如何一次性引入 /app/controllers 資料夾下的所有控制器檔案,存入一個 controllers 變數中?

cnpm i require-all

然後在入口檔案中呼叫即可:

const controllers = require('require-all')({
  dirname: __dirname + '/controllers',
})

console.log(controllers.user)

這樣就能一次性引用所有檔案了。

該模組還提供了一些額外引數:

const controllers = require('require-all')({
  dirname     :  __dirname + '/controllers',
  filter      :  /(.+Controller)\.js$/,
  resolve     : function (Controller) {
    return new Controller();
  }
});

這樣可以實現兩個功能:

  • 只引用名為 *Controller.js 的檔案。
  • 引用進來的檔案先用 new 例項化再存入 controller 變數。

這適用於定義為類的控制器檔案,如:

module.exports = class UserController {
    async index() {
        return []
    }
}

相關文章