2014-06-26 191 views
0

我有一個Node js和Express web應用程序。將變量傳遞給外部路由

我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

Express不會像本地節點那樣給你reqres。它也爲您提供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