Express: как создавать функции вне app.get ()? - PullRequest
0 голосов
/ 26 сентября 2018

Как-то так у меня не работает:

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

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

Как мне поддерживать чистоту маршрутов и загружать их извне?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Идентификатор не работает, потому что область действия res является промежуточным программным обеспечением обзора, но рендеринг наследует глобальную область, в которой не объявлено 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 написал в ответе, также является очень хорошим подходом,разделите ваше приложение, используя промежуточное ПО.

0 голосов
/ 26 сентября 2018

Вы можете использовать его так:

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;
...