Node.js Express:如何在app.get()之外创建函数?

Node.js Express:如何在app.get()之外创建函数?,node.js,express,routes,global-functions,Node.js,Express,Routes,Global Functions,像这样的事情对我不起作用: function renderSite1() { return res.render('site.html'); } app.get('/overview', function(req, res) { renderSite1(); } 如何保持路由干净并从外部加载功能?您可以这样使用它: app.js var campgroundRoutes = require("./routes/campgrounds"), commentsR

像这样的事情对我不起作用:

function renderSite1() {
    return res.render('site.html');
}

app.get('/overview', function(req, res) {
    renderSite1();
}

如何保持路由干净并从外部加载功能?

您可以这样使用它:

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;

您可以这样使用它:

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;
Id不起作用,因为
res
的作用域是概览中间件,但呈现继承全局作用域,而全局作用域没有声明
res

您可以做的是将req作为renderSite1()的参数传递,但这并不总是干净的

我喜欢做的是:

创建一个函数,该函数返回一个req固定的新函数

这种技术称为,显示模块模式

@artidokuz在回答中所写的也是一种非常好的方法,即使用中间件划分应用程序

Id不起作用,因为
res
的作用域是概览中间件,但呈现继承全局作用域,而全局作用域没有声明
res

您可以做的是将req作为renderSite1()的参数传递,但这并不总是干净的

我喜欢做的是:

创建一个函数,该函数返回一个req固定的新函数

这种技术称为,显示模块模式

@artidokuz在回答中所写的也是一种非常好的方法,即使用中间件划分应用程序