2017-12-04 6 views
1

나는 익스프레스 (express)와 퍼그 (pug)를 사용하고 있습니다. 예를 들어 req.sessionreq.path과 같이 모든 요청에 ​​대해 pug에 전달하고자하는 값이 있습니다. 매번 render() 메소드에이 값을 전달하는 것은 지나치게 중복 된 것처럼 보입니다. 그래서 그 대신 같은 일을의전역 적으로 설정된 pug 변수

:

app.get('/', (req, res) => { 
    res.render('home', {session: req.session}) 
}) 
app.get('/profile', (req, res) => { 
    res.render('profile', {session: req.session}) 
}) 

추가됩니다 더 많은 경로, 내가 관리 할 필요가 해당 항목의 더. app.locals 이외에 한번 설정할 수있는 글로벌 방식이 있습니까? 요청마다 고유합니다.

답변

2

사용자 지정 미들웨어 및 locals 비트를 사용하여 각 요청마다 모든 템플릿에서 사용할 수있는 변수를 설정할 수 있습니다. 이 같은 접근법은 Pug뿐 아니라 Express가 사용할 수있는 모든 템플릿 시스템에서 작동합니다.

앞에 경로를 입력하십시오.

app.use((req, res, next) => { 
    res.locals.session = req.session 
    next() 
}) 

그런 다음 템플릿에서 이것을 다음과 같이 부를 수 있습니다.

h3= session.name 
+0

그게 내가 찾고있는 것입니다! –