繁体   English   中英

在node.js中包括单独的路由文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM