如何使用node和express.js自动包含服务

时间:2015-02-15 19:29:29

标签: node.js

我的./controller/index.js看起来像吼叫

module.exports = function(app) {

    app.use('/api/user/session', require('./authentication.controller'));
    app.use('/api/users', require('./users.controller.js'));
    app.use('/api/roles', require('./roles.controller.js'));
    app.use('/api/tenants', require('./tenants.controller.js'));
}

在控制器下我有

└── controllers
    ├── users.controller.js
    ├── roles.controller.js
    └── authentication.controller.js

我的问题如果我在/ controller文件夹下添加任何新文件,它应该动态添加到controller / index.js

例如,如果在控制器文件夹下添加permission.js,我的controller / index.js文件应该变得像下面一样。

module.exports = function(app) {

    app.use('/api/user/session', require('./authentication.controller'));
    app.use('/api/users', require('./users.controller.js'));
    app.use('/api/roles', require('./roles.controller.js'));
    app.use('/api/tenants', require('./tenants.controller.js'));
    app.use('/api/permission', require('./permission.controller.js'));
}

请帮帮我。

1 个答案:

答案 0 :(得分:1)

您可以在控制器文件夹中创建一个index.js文件,该文件执行以下操作:

<强> ./控制器/ index.js

'use strict';

var fs = require('fs'),
    path = require('path');


//load all routes in dir
module.exports = function (server) {
  fs
      .readdirSync(__dirname)
      .filter(function (file) {
        return (file.indexOf(".") !== -1) && (file !== "index.js");
      })
      .forEach(function (file) {
        file = file.split('.')[0];
        server.use('/api/' + file, require(path.join(__dirname, file));
      });
};

<强> app.js

//load all controllers and routes
require('.controllers')(server)