我正在开发一个Node js + Express + express-handlebars应用程序。在我的 app.js 文件中,我将路由定义为
var students = require('./routes/students');
var faculty = require('./routes/faculty');
app.use('/students', students);
app.use('/faculty', faculty);
路径文件夹中存在 students.js 和 faculty.js 。因此,当用户使用/ students前往路径时,我会在students.js中执行以下操作:
var express = require('express');
var router = express.Router();
router.get('/', function(req, res){
res.render('students_view', {
msg : 'this is student page'
});
});
module.exports = router;
其中students_view
是views文件夹中的快递手柄页面。现在假设我要添加一名新学生,当我按下 student_view 页面上的添加按钮时,我会转到带有此网址的页面:/ students / add
在该页面上,我需要呈现不同的视图(确切地说是一种形式)。在我的app.js中,我正在执行以下操作:
app.use('/student/add', students);
在我的student.js中,我正在做以下事情:
router.get('/add', function(req, res){
res.render('students_add', {
msg : 'this is student add page'
});
});
但是,它仍然转到较早的router.get('/')并呈现student_view页面。如何为此路径呈现不同的视图?它是否需要自己独立的路线(比如student_add.js),我可以在哪里处理获取和发布?
答案 0 :(得分:2)
您正在使用app.js
中的路线。将您的student.js
更改为
router.get('/', function(req, res){
res.render('students_view', {
msg : 'this is student page'
});
});
router.get('/add', function(req, res){
res.render('students_add', {
msg : 'this is student add page'
});
});
和app.js
到
app.use('/students', students);
// not need of app.use('/students/add', students);
答案 1 :(得分:0)
删除app.use('/student/add', students);
中的app.js
只需在/students
/routes/students.js
路线即可
app.use('/students', students);
按住以下所有网址:
/students
/students/foo
/students/foo/bar
...
除非您在app.use('/students/baz', anotherStudentsRoute);
之前写出app.use('/students', students);
之类的路线。