我是 Node/Express 的新手,我认为这是一个简单的问题,但如果我的逻辑/理解是正确的,我还不太清楚。
这是我的应用程序结构的简化版本:
/app
/routes
filter.js
index.js
app.js
我已经在我的 app.js 文件中定义了我的路由,就像这样。
// app.js
app.use('/', require('./routes/index'));
app.use('/filterone', require('./routes/filter'));
app.use('/filtertwo', require('./routes/filter'));
我想将来自/filterone 和/filtertwo 的流量指向我的filter.js 路由,然后在路由中我想像这样处理它们:
// filter.js
router.get('/filterone', function(req, res, next) {
// do something
}
router.get('/filtertwo', function(req, res, next) {
// do something
}
这是执行此操作的正确方法吗?或者我应该以不同的方式处理我的路线吗?
最佳答案
我不相信您拥有的代码可以完成您想要完成的任务。当你这样做时:
app.use('/filterone', require('./routes/filter'));
您正在将您在 filter.js
中定义的路由添加到您的应用的路由中,并预先附加了 '/filterone'
。由于您定义了过滤器 '/filterone'
路由(我假设这是在 filter.js
中)。这意味着要访问您需要查询的路由 /filterone/filterone
。
Andreas Rau 的回答是可行的,但如果您想要多个路由文件,您只需添加一个小文件即可。
//app.js
const express = require('express'),
index = require('./routes/index')
filters = require('./routes/filter'),
app = express();
app.use('/', index);
app.use('/filter', filters);
这样您就可以使用/filter/route_name
访问您的过滤路由。如果它们在不同的路由文件中,这将使您可以自由地调用相同的东西。例如,您可能想要显示一个过滤器并在您的索引中显示一些内容。这样你就可以在各自的文件中调用它们 show 并且索引显示路由是 /show
并且过滤器显示路由是 /filter/show
。
编辑* 这是您的路由文件的示例,该示例基于 Andreas Rau 的回答并使用了子路由:
routes/filter.js
:
const express = require('express'),
router = express.Router();
router.get('/show',(req,res) => {
//handle /filter/show
} );
router.get('/filterone',(req,res) => {
//handle /filter/filterone
} );
router.get('/filtertwo',(req,res) => {
//handle /filter/filtertwo
} );
module.exports = router;
routes/index.js
:
const express = require('express'),
router = express.Router();
router.get('/show',(req,res) => {
//handle /show
} );
module.exports = router;
关于javascript - 在单个 .js 文件中快速路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41002012/