Node.js Express导出组织的路由?

使用express.Router()来调用/从我们的应用程序的API调用:

var express = require('express'); var app = express(); var router = express.Router(); 

在每个API调用之前router.use console.use console.logs:

 router.use(function(req, res, next) { // run for any & all requests console.log("Connection to the API.."); // set up logging for every API call next(); // ..to the next routes from here.. }); 

我们如何将我们的路线导出到folder/routes.js ,然后从我们目前所在的主app.js中访问它们:

 router.route('/This') // on routes for /This // post a new This (accessed by POST @ http://localhost:8888/api/v1/This) .post(function(req, res) { // do stuff }); router.route('/That') // on routes for /That // post a new That (accessed by POST @ http://localhost:8888/api/v1/That) .post(function(req, res) { // do stuff }); 

…当我们为每个路线添加前缀时:

 app.use('/api/v1', router); // all of the API routes are prefixed with '/api' version '/v1' 

在你的新路线模块(例如在api/myroutes.js )中,导出模块为module.exports = myRouter;

 var express = require('express'); var router = express.Router(); router.use(function(req, res, next) { // run for any & all requests console.log("Connection to the API.."); // set up logging for every API call next(); // ..to the next routes from here.. }); router.route('/This') .get(function(req, res) { }); .post(function(req, res) { }); ... module.exports = myRouter; 

然后,您可以在您的主服务器/应用程序文件中要求该模块:

 var express = require('express'); var app = express(); ... var myRoutes = require('./api/myRoutes'); app.use('/api', myRoutes); //register the routes 

在您的app.js文件中,您可以具有以下内容:

 //api app.use('/', require('./api')); 

在文件夹api你可以有'index.js`文件,在这里你可以写这样的东西:

 var express = require('express'); var router = express.Router(); //API version 1 router.use('/api/v1', require('./v1')); module.exports = router; 

在文件夹中的文件index.js是这样的:

 var express = require('express'); var router = express.Router(); router.use('/route1', require('./route1')); router.use('/route2', require('./route2')); module.exports = router; 

文件route1.js可以有以下结构:

 var express = require('express'); var router = express.Router(); router.route('/') .get(getRouteHandler) .post(postRouteHandler); function getRouteHandler(req, res) { //handle GET route here } function postRouteHandler(req, res) { //handle POST route here } module.exports = router; 

route2.js文件可以具有相同的结构。

我觉得这对开发节点项目非常舒服。