用express.jsdynamic加载路由

我正在使用express.js作为一个networking服务器,并想要一个简单的方法来分离所有的“app.get”和“app.post”函数来分离文件。 例如,如果我想为login页面指定get和post函数,我想在一个dynamic加载的routes文件夹中有一个login.js文件(将自动添加所有文件,而不必指定每个文件)当我运行节点app.js

我已经尝试了这个解决scheme ,但它不适合我。

app.js

var express=require("express"); var app=express(); var fs=require("fs"); var routePath="./routers/"; //add one folder then put your route files there my router folder name is routers fs.readdirSync(routePath).forEach(function(file) { var route=routePath+file; require(route)(app); }); app.listen(9123); 

我在该文件夹下面放置了两台路由器

route1.js

 module.exports=function(app){ app.get('/',function(req,res){ res.send('/ called successfully...'); }); } 

route2.js

 module.exports=function(app){ app.get('/upload',function(req,res){ res.send('/upload called successfully...'); }); } 

我最终使用recursion方法来保持代码的可读性和asynchronous性:

 // routes processRoutePath(__dirname + "/routes"); function processRoutePath(route_path) { fs.readdirSync(route_path).forEach(function(file) { var filepath = route_path + '/' + file; fs.stat(filepath, function(err,stat) { if (stat.isDirectory()) { processRoutePath(filepath); } else { console.info('Loading route: ' + filepath); require(filepath)(app, passport); } }); }); } 

这可以通过检查正确的文件扩展名等更健壮,但我保持我的路线文件夹干净,不希望增加的复杂性