如何在一个不同的模块中分离一个路由,并且#34;要求它"在index.js?

时间:2016-10-08 21:23:28

标签: node.js express

我有一个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中。

我仔细阅读了这篇文章,但由于文件名相似,我不太了解它。 How to separate routes on Node.js and Express 4?

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

1 个答案:

答案 0 :(得分:1)

routes中创建一个名为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路线之前。否则快递会将shuffle解释为id(希望不会是id)

如果你只想"外包" "/v1/games/shuffle,请确保它位于server.js文件中的app.get("/v1/games/:id"...)之前