从server.js到routes.js的路由,不传递参数

时间:2016-08-09 08:50:22

标签: javascript node.js express

我的根文件夹中有一个server.js,其中包含以下内容。

// server.js
const app = express();
const HomeController = require("./controllers/HomeController");
const UserController = require("./controllers/UserController");
app.use(...)
app.use(...)

app.get('/', HomeController.index);
app.get('/login', UserController.getLogin);

我想在名为routes.js的文件中使用app.get个端点,所以它看起来像这样:

// routes.js
app.get('/', HomeController.index);
app.get('/login', UserController.getLogin);

当我这样做时,appHomeControllerUserController变为undefined

我可以将它们传递给routes.js,如:

require("routes")(app, HomeController, UserController);

但是,它不是未来兼容的,所以如果我创建一个新的控制器,我必须将它们传递到routes.js文件。

相反,我可以以某种方式告诉routes.js访问server.js范围吗?有没有办法通过server.js访问routes.js中的变量?

1 个答案:

答案 0 :(得分:0)

为什么你没有使用ExpressJS的默认模式。像:

var apiRoutes = require('./api_server/routes/api');

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

... /路线/ api.js:

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

var loginCtrl = require('../controllers/auth/login');

router.post('/authenticate', loginCtrl.login);
router.post('/resetAdminPassword', loginCtrl.resetAdmin);
// router.get('/tieba/:id', tiebaCtrl.one);

module.exports = router;