在routes.js中使用Express Router

时间:2015-03-12 14:57:59

标签: node.js express routes

我目前正在 app.js 中使用路线,如下所示:

// Router configuration
var router = express.Router();

router.route('/user')
    .get(userController.getUser)
    .post(userController.postUser);

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

是否可以将Express路由器路由放在另一个文件中,例如 routes.js 并从app.js调用?我尝试在routes.js中使用app.get并且它正在运行。但是如下所示在所有路由中添加/api前缀是很烦人的。

module.exports = function(app){
    app.get('/user', userController.getUser);
};

或者,无论如何在app.get使用命名空间?谢谢

2 个答案:

答案 0 :(得分:2)

为什么不做你正在做的事情,而是做你的路线文件?

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

router.route('/user')
    .get(userController.getUser)
    .post(userController.postUser);

module.exports = function(app) {
    app.use('/api', router);
};

然后你的app.js文件

require('./routes.js')(app);

路由器也支持名称空间,所以你甚至可以做

app.use('/', require('./routes.js'));

在您的路线文件中(这可以跨文件拆分以实现模块化)

var express = require('express');
var mainRouter = express.Router();
var userRouter = express.Router();

userRouter.route('/user')
    .get(userController.getUser)
    .post(userController.postUser);

mainRouter.use('/api', userRouter);

module.exports = mainRouter;

答案 1 :(得分:1)

您不需要在 app.js 中声明您的路线,事实上,最好将每条路线放在自己的文件中,这样您就可以编写 routes / my_route。 js 文件为:

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

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
});

module.exports = router;

然后在 app.js

var express = require("express");
var myRoute = require("./routes/my_route");
var app = express();
app.use("/my-route", myRoute);