如何在不同的模块中分离一条path,并在index.js中“需要它”?

我有一个Node / Express应用程序,我需要将一个路线移动到不同的文件。 这是我的index.js。

'use strict'; let express = require('express'), bodyParser = require('body-parser'), logger = require('morgan'), _ = require('lodash'); let app = express(); app.use(logger('combined')); app.use(express.static('public')); app.use(bodyParser.json({})); app.use(bodyParser.urlencoded({ extended: true })); console.log("I am open"); let users = [///stuff ]; let games = []; // Handle POST to create a user session app.post('/v1/session', function(req, res) { // do things }); // Handle POST to create a new user account app.post('/v1/user', function(req, res) { // do things }); // Handle GET to fetch user information app.get('/v1/user/:username', function(req, res) { // do things }); // Handle POST to create a new game app.post('/v1/game', function(req, res) { // do things }); // Handle GET to fetch game information app.get('/v1/game/:id', function(req, res) { // do things }); let server = app.listen(8080, function () { console.log('Example app listening on ' + server.address().port); }); 

我想要一个新的服务器端路由(GET /v1/game/shuffle?jokers=false) ,但我不太明白如何将它分离成一个新的文件,也许在./routes/shuffleRoute.js

我读了这个,但由于文件名相似,我不太明白。 如何分离Node.js和Express 4上的路线?

而我只是想分开一条路线,而不是全部。

routes创build一个名为shuffleRoute.js的文件。 在这个文件中写下类似的东西

 var express = require('express'); var router = express.Router(); router.get("/shuffle", function (req, res, next) { // magic here }); router.get("/:id", function (req, res, next) { // more magic here }); module.exports = router; 

并在你的server.js

 app.get("/v1/games", require("./routes/shuffleRoute.js")); 

在你的情况下,节点是很重要的,因为你正在使用id参数,你的shuffle路由需要在:id路由之前。 否则,express会将shuffle解释为一个id (希望不是id)

如果您只想“外包” "/v1/games/shuffle ,请确保在app.get("/v1/games/:id"...)的server.js文件