2014-06-26 4 views
0

У меня есть веб-приложение Node js и Express.Передача переменной во внешний маршрут

Мои app.js выглядит

var pages_route = require('./route/pages'); 

/* 
--------------------- 
------ ROUTE -------- 
--------------------- 
*/ 

app.get('/', pages_route.index);//home 

Мой маршрут/pages.js выглядит

exports.index = function(req, res){ 

    res.render('home.ejs'); 

}; 

Я пытаюсь передать имя вида для каждого маршрута из файла app.js как следующие:

app.get('/', pages_route.index), template = 'home'; 

В пути/pages.js

exports.index = function(req, res){ 

     res.render(template + '.ejs'); 

    }; 

Это решение отлично работает для одного маршрута, но когда я создаю больше чем один, как

app.get('/', pages_route.index), template = 'home'; 
app.get('/custompage', pages_route.custom), template = 'skeleton'; 

Приложение будет принимать фамилию вида передается для всех маршрутов, в этом случае вид «скелет «будет напечатано для всех моих маршрутов.

Я не хочу создавать разные экземпляры для каждого маршрута, например template1, template2, template3 и т. Д. Я просто хочу найти решение, подобное моему примеру.

спасибо !!

ответ

0

Экспресс не дает вам req и res как родной узел. Он также дает вам next

Далее позволяет создавать промежуточное программное обеспечение, функции, выполняемые как часть обработки запроса, но необязательно завершать запрос.

Вот пример для случая использования:

// middleware 
function setTemplate (template) { 
    return function applyTemplate (req, res, next) { 
    req.template = template; 
    next(); 
    }; 
} 

// route 
app.get('/', setTemplate('home'), pages_route.index); 

// handler 
exports.index = function (req, res) { 
    res.render(req.template + '.ejs'); 
}; 
+0

Большое спасибо за ваш ответ, это решение работает отлично !! – Spetty

Смежные вопросы