저는 현재 새 프로젝트에서 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) {
하면 치명적인 오류 없이도 작업을 수행 할 수 있습니다 . 🙂
답변
지역 개체에 ‘사용자 이름’이 포함되지 않아야합니까?
답변
isDefined
내 뷰의 모든 곳에서 메서드를 사용할 수 있도록 미들웨어를 만들었습니다 .
module.exports = (req, res, next) => {
res.locals.isDefined = (variable) => {
return typeof(variable) !== 'undefined'
};
next();
};