[英]Including seperate route files in node.js
我正在开发应用程序,并且以其他方式定义了自定义路由。 我正在使用Web Storm IDE进行开发,它具有特定的路由文件夹,其中所有路由都单独保存。 我的目录/routes/about.js文件中包含以下代码:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('about', { title: 'About Us' });
});
module.exports = router;
现在,在app.js中,我编写了以下代码以包含这些路由并使用它:
var index = require('./routes/index');
var users = require('./routes/users');
var about = require('./routes/about');
app.use('/', index);
app.use('/users', users);
app.use('/about', about);
但是,当我单击“关于”链接时,它不会打开页面。 不过,如果我直接在app.js文件中将路由写为:
app.get('/about', function (req, res) {
res.render('about');
});
然后呈现页面。 另外,如果我不创建单独的路由,而是使用默认的路由文件(/routes/index.js)并将其包含在该文件中,那么代码也可以正常工作。 谁能解释或告诉我我是否错过了这些路由文件的映射,或者我在语法上做错了什么
您可能为/about/about
创建了一条路线。 要解决此问题,请从以下位置更改关于路由器:
router.get('/about', ...);
对此:
router.get('/', ...);
然后,再加上:
app.use('/about', router);
其中已经包含/about
路径。 该路由器中的所有/about
在路径的开头都已经有/about
。
在About文件中使用以下代码
app.get('/', function (req, res) {
res.render('about');
});
您已经在主文件中定义了“ / about”路由,因此,如果要在“ / about”上呈现页面,则需要在“ about”页面中定义类似“ /”的路由。
例如,路线“ / about / us”,则功能将在“关于”页面中:
app.get('/us', function (req, res) {
res.render('about us');
});
重定向路线的方法是正确的,但是您尚未将路线传递给应用。
所以你要做的是
router.use('/about', about);
app.use('/', router);
就像明智地在应用程序中添加路由器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.