像这样的事情对我不起作用:
function renderSite1() {
return res.render('site.html');
}
app.get('/overview', function(req, res) {
renderSite1();
}
如何保持路由的清洁和外部加载功能?
答案 0 :(得分:2)
您可以像这样使用它:
app.js
var campgroundRoutes = require("./routes/campgrounds"),
commentsRoutes = require("./routes/comments"),
indexRoutes = require("./routes/index");
app.use(indexRoutes);
app.use("/campgrounds" , campgroundRoutes);
app.use("/campgrounds/:id/comments" , commentsRoutes);
index.js
var express = require("express");
var router = express.Router();
//------------------------------------------------------------------------------
// HOMEPAGE
//------------------------------------------------------------------------------
router.get("/" , function(req,res){
res.render("landing");
});
module.exports = router;
答案 1 :(得分:1)
Id不起作用,因为
res
的范围是概述中间件,但是render继承了没有声明res
的全局范围。
您可以做的是将req作为renderSite1()的参数传递,但这并不总是很干净。
我喜欢做的是:
创建一个函数,该函数返回固定要求的新函数
function renderModule(res) { // it will be fixed for all the functions
function renderSite1() {
res.render() // visible
}
function renderSite2() {
res.render() // visible
}
return {
renderSite1,
renderSite2
}
}
这种技术称为显示模块模式
@artidokuz在答案中写的也是一种很好的方法,使用中间件划分应用程序。