我有以下结构
project
-app/
--controllers/
---home.js
--models/
---home.js
--views/
---home.html
-db/
--db.js
-index.js
我的控制器home.js看起来像这样:
var express = require('express');
var router = express.Router();
var database = require('../models/home');
var path = require('path');
router.get("/", function(request, response) {
response.sendFile(path.join(__dirname, '../views', 'home.html'));
});
module.exports = router;
现在我想让这条路线变得有用,所以在index.js
我有:
var express = require('express');
var app = express();
var port = 3000;
app.use(require('./app/controllers/home')); //<-- this is what I ask for
app.listen(3000, function(err ) {
//......
})
但是现在我有更多只是路由到'家',所以而不是
app.use(require('./app/controllers/home'));
app.use(require('./app/controllers/about'));
app.use(require('./app/controllers/etc'));
我读到我可以使用:
app.use(require('./app/controllers/'));
但是我发现无法找到该模块的错误。您能否建议我如何轻松获取所有路线?谢谢:))
答案 0 :(得分:3)
如果我理解你的问题,你正试图将路由器路由到不同的相对路径。 您可以通过将该路径作为第一个参数传递来设置相对路径。然后路由器内部使用app.get / use / ...的任何路由都将从该相对路径开始。
内部index.js
app.use("/home", require('./app/controllers/home'));
app.use("/about", require('./app/controllers/about'));
app.use("/etc", require('./app/controllers/etc'));
在./app/controllers/home和其他路线
内router.get("/", ...) // this will be located at localhost/home
router.get("/myhouse, ...) // this will be located at localhost/home/myhouse
另外值得一提的是,您可以在路由器中路由路由器
router.use("/", require('path/to/another-router.js'))