我目前正在 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
使用命名空间?谢谢
答案 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);