【问题标题】:How do I separate one route in a different module and "require it" in index.js?如何在不同的模块中分离一个路由并在 index.js 中“需要它”?
【发布时间】:2016-10-09 05:50:14
【问题描述】:

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

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

【问题讨论】:

    标签: node.js express


    【解决方案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 路由之前。否则 express 会将shuffle 解释为id(希望不是id)

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

    【讨论】:

    • 您的意思是写app.get("/v1/game", require("./routes/shuffleRoutes.js")) 吗?我想要的路线应该类似于我在 server.js 中的路线
    猜你喜欢
    • 2017-06-08
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    相关资源
    最近更新 更多