[node.js] Jade-템플릿 엔진 : 변수가 있는지 확인하는 방법

저는 현재 새 프로젝트에서 Jade를 사용하고 있습니다. 페이지를 렌더링하고 특정 변수를 사용할 수 있는지 확인하고 싶습니다.

app.js:

app.get('/register', function(req, res){
    res.render('register', {
        locals: {
          title: 'Register',
          text: 'Register as a user.',
        }
      });
});

register.jade:

- if (username)
p= username
- else
p No Username!

항상 다음과 같은 오류가 발생합니다.

username is not defined

이 문제를 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?



답변

이것은 작동합니다.

- if (typeof(username) !== 'undefined'){
  //-do something
-}


답변

정의되지 않은 값 대신 잘못된 값을 테스트하는 데 신경 쓰지 않는다면 @Chetan의 방법보다 간단합니다.

if locals.username
  p= username
else
  p No Username!

이것은 다소 아이러니하게 명명 된 locals것이 템플릿의 루트 개체 이기 때문에 작동합니다 .


답변

if 'username' in this
    p=username

res.locals가 템플릿의 루트 개체이기 때문에 작동합니다.


답변

사용 가능한 특정 변수를 원하지만 항상 사용되는 것은 아니라는 것을 미리 알고 있다면 헬퍼 객체에 “기본값”값을 추가하기 시작했습니다.

app.helpers({ username: false });

이렇게 if (username) {하면 치명적인 오류 없이도 작업을 수행 할 수 있습니다 . 🙂


답변

지역 개체에 ‘사용자 이름’이 포함되지 않아야합니까?

https://github.com/visionmedia/jade/tree/master/examples


답변

isDefined내 뷰의 모든 곳에서 메서드를 사용할 수 있도록 미들웨어를 만들었습니다 .

module.exports = (req, res, next) => {
  res.locals.isDefined = (variable) => {
    return typeof(variable) !== 'undefined'
  };
  next();
};


답변