我可以从/ routes /加载所有路由与fs.readdir和装载与app.use(…)?

我试图学习如何使用Express,我注意到我的app.js中有一些重复的forms:

var index = require('./routes/index') , login = require('./routes/login') , register = require('./routes/register') , logout = require('./routes/logout') , posts = require('./routes/posts') , user = require('./routes/user'); app.use('/', index); app.use('/login', login); app.use('/register', register); app.use('/logout', logout); app.use('/posts', posts); app.use('/user', user); 

我想知道是否有可能使用fs.readdir从/路由获取所有路由,然后遍历它们运行app.use(…)。 我第一次尝试:

 routeFiles = fs.readdir('./routes/', function(err, files) { _.each(files, function(file) { name = file.split('.')[0] app.use("'/" + name + "', " + name); }); }); 

并得到以下错误:

 TypeError: app.use() requires middleware functions at Function.use (/Users/.../application.js:17 

我猜这是因为一个string(“名称”)被传递给app.use而不是路由函数本身(正如上面声明的所有其他variables声明)。 接下来,我尝试在_.each函数中为每个路由声明函数variables,以便我可以直接传递它们,而不仅仅是路由名称的string:

 routeFiles = fs.readdir('./routes/', function(err, files) { _.each(files, function(file) { name = file.split('.')[0]; app.use('\'/' + name + '\', ' + require('./routes/' + name)); }); }); 

我仍然,但是,得到以下错误:

 /Users/.../lib/application.js:178 throw new TypeError('app.use() requires middleware functions'); ^ TypeError: app.use() requires middleware functions at Function.use (/Users/.../lib/application.js:178:11) 

我正在围绕着这个圈子,所以我希望这里有人能够帮助我。 请让我知道这是一个愚蠢的想法,我不应该考虑的东西; 正如我所说,我是Express(和JS,真的)的新手,所以我只是在玩,想知道。 谢谢!

更新 :这里是一个示例路线,所以你可以看到我想加载。 在这种情况下,这是索引页面的简单路由。

 var express = require('express'); var router = express.Router(); // [GET] index router.get('/', function(req, res) { res.render('index', { title: 'Home', user: req.user }); }); module.exports = router; 

你的最后一个方法与require可以工作 – 你的路线文件将不得不看起来像这样:

 module.exports = function(req, resp, next){ // your middleware code here }; 

这是因为app.use中的参数是一个path和一个函数。