javascript - 如何在 Express.js 中为路由的子路径呈现不同的 View ?

标签 javascript node.js express

我正在开发一个 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.jsfaculty.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 文件夹中的 express-handlebars 页面。现在假设我想添加一个新学生,当我在 student_view 页面上按下添加按钮时,它会将我带到一个具有以下 url 的页面:/students/add

在该页面上,我需要呈现不同的 View (准确地说是一种形式)。在我的 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页面。如何为此路径呈现不同的 View ?它是否需要自己的单独路由(比如 student_add.js),我可以在其中处理获取和发布?

最佳答案

您正在使用 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); 

关于javascript - 如何在 Express.js 中为路由的子路径呈现不同的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36082078/

相关文章:

javascript - 限制实现接口(interface)的 typescript 类方法

javascript - 在另一个 ViewComponent 中调用一个 ViewComponent

javascript - 使用单个 frisby.js 测试文件创建多个 cookie

javascript - 使用 Express 访问 Node.js 中的模型

node.js - 本地运行的解析服务器在调用用户注册时出现错误

表单提交前的 Javascript 处理条件

javascript - 如何使用ajax php刷新div标签内的表格

node.js - 当 res.flush() 不起作用时,如何刷新到事件流? ( Node .js)

windows - 无法让 Docpad 在 Windows 上运行

node.js - 使用 Mongo/Express/Angular/Node 推送到模型中的数组