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

我的./controller/index.js看起来像波纹pipe

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 

我的问题,如果我添加/控制器文件夹下的任何新文件,它应该dynamic地添加在控制器/ index.js

例如,如果我添加permission.js控制器文件夹下我的控制器/ 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')); } 

请帮帮我。

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

./controllers/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)