簡體   English   中英

將額外的參數傳遞給 Express 中的路由處理程序

[英]Passing extra parameters to route handlers in Express

我對 Express 比較陌生,我正在尋找一種使路由更可重用的方法。 在我的應用程序中,我將有很多路由可以傳遞給通用處理程序,但會有不同的模板。

例子:

app.get('/about', function(req, res) {
    res.render('about.html');
});

app.get('/', function(req, res) {
    res.render('home.html');
});

雖然這個例子很懊悔,但我有 30 多條這樣的路線。 我希望能夠做的是這樣的事情:

app.get('/about', generic.render('about.html'));

或以其他方式將模板名稱傳遞給返回res.render的函數 這在 Express 中可能嗎? 我試圖解決這個問題的所有嘗試都導致變量未定義。

我不想做這樣的事情,將我的路由參數和模板名稱緊密耦合:

app.get('/:template', function(req, res) {
    res.render(req.params.template + '.html');
});

您可以制作一個簡單的中間件來為您執行此操作。 例子:

function simpleRender(file, opts) {
  opts || (opts = {});
  return function(req, res) {
    res.render(file, opts);
  };
}

然后像這樣使用它:

app.get('/about', simpleRender('about.html'));

app.get('/', simpleRender('home.html'));

這就是我的做法:

const handler = (req, res, template) => {
  res.render(template)
}

app.get('/about', (req, res) => {
  handler(req, res, 'about.html')
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM