像这样的东西对我不起作用:
function renderSite1() {
return res.render('site.html');
}
app.get('/overview', function(req, res) {
renderSite1();
}
如何保持路线清洁并从外部加载功能?
像这样的东西对我不起作用:
function renderSite1() {
return res.render('site.html');
}
app.get('/overview', function(req, res) {
renderSite1();
}
如何保持路线清洁并从外部加载功能?
你可以像这样使用它:
应用程序.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;
id 不起作用,因为 , 的范围
res
是概览中间件,但是 render 继承了没有res
声明的全局范围。
您可以做的是将 req 作为参数传递给 renderSite1(),但这并不总是干净的。
我喜欢做的是:
创建一个函数,该函数返回一个 req 固定的新函数
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 在答案中写的也是一个非常好的方法,使用中间件划分您的应用程序。