用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); } }); }); }
这可以通过检查正确的文件扩展名等更健壮,但我保持我的路线文件夹干净,不希望增加的复杂性
- Angular with CoffeeScript和Jade for前端,Node,Express和CoffeeScript用于后端
- 如何使用中间件在进入每条路线之前检查授权?
- 如何configurationAPI端点以从ember-uploader组件接收文件
- 使用db.open()内的导出callback – mongoose / express
- Nodejs Express 4 Multer | 如果用户没有授权,请停止file upload
- Chai / Moka – > TypeError:request.get(…).expect不是一个函数
- 节点js,Express和句柄渲染fullcalendar插件无法正常工作
- 在Express.js中(在Node.js上)更改process.env.PORT的PORT
- 发送发送请求到节点服务器时没有得到响应