2017-04-02 2 views
0

정적 파일이 많으며 article1, article2 등으로 이름이 지정됩니다. 그래서 나는 루프를 사용하여 표현식에서 동적 렌더링이 작동하지 않습니다.

app.get('/this-is-my-article-routes', (req, res) => { 
     res.render('article1'); 
}); 

을 할 때 일을 알고 있지만 너무 지루한 반복 코드를 많이 가지고있다. 나는 이것을 시도했지만 효과가 없다?

const articleArr = [ 
    'this-is-my-article-routes' 
]; 

for (i = 0; i<9; i++) { 
    app.get(`/${articleArr[i]}`, (req, res) => { 
     res.render(`article${i}`); 
    }); 
} 

이 경우에도 가능합니까? 또는 내 코드에 문제가 있습니까?

+0

이유를 아래 투표? 이상한 –

+0

당신의'i' 변수가 실제로 루트 핸들러가 잘못 실행됩니다. 'for (let i = 0; i <9; i ++)'를 사용하면'for' 루프에서'let'이 루프의 각 호출에 대해 별도의'i' 변수를 생성하기 때문에 아마 작동 할 것입니다 이벤트 핸들이 나중에 실행될 때 적절한 값. – jfriend00

답변

0

배열 articleArr에 10 개의 요소가 있습니까?

var articleList = [ 'first', 'second', 'third'] 
app.get('/:article', (req, res) { 
    var articleName = req.params.article 
    var index  = articleList.indexOf(articleName) 
    if (index == -1) { 
     // No Aricle Found 
    } 
    res.render(`articles$(index)`) 
}) 

이 코드는 잘 작동하지만 권장 하나되지 않습니다 :

내가 생각하기에,이 작업을 수행 할 수있는 더 좋은 방법이 될 것입니다.

var articleList = ['first', 'second'] 
articleList.forEach(function(value){ 
    app.get('/'+value, (req, res) => { 
     res.status(200).json({ 
      value: value 
     }) 
    }) 
}) 
+0

예. 그러나 무엇 : 기사? 제목은 파일 이름이 아니어야합니다. –

+0

사용자가/첫 번째 끝점을 요청하면 articles0을 렌더링하게됩니다. articlelist에 첫 번째 요소로''this-is-my-article-routes''를 저장하고 articles0을 렌더링 할 수 있습니다. – Tolsee

1
how about simple solution using query params 
app.get('articleArr/:id', (req, res) => { 
     res.render('article/'+req.params.id); 
    }); 
+0

개념은 좋은 개념이지만,'res.render()'에 전달할 매개 변수가 잘못되었습니다. 문자열을 만들어야합니다. – jfriend00

+0

@ jfriend00 답장을 보내 주셔서 감사합니다. –

관련 문제