본문 바로가기

백엔드/nodeJS

Express View engine - PUG (3)

PUG Conditionals

자바스크립트의 if, if else, else 와 같은 구문을 말한다. 대표적으로 로그인 상태, 로그아웃 상태를 활용할 수 있다.

* pug 변수 표기

title #{pageTitle} | wetube
ㄴ 다른 text와 같이 사용될 때는 #{}로 변수라고 정의해야한다.

h1 = pageTitle === h1 #{pageTitle}
ㄴ 단독으로 사용될 때는 '='로 변수를 정의할 수 있다.

* attribute에서 변수 사용법
a(href=`videos/${video.id}` or a(href="videos/"+ video.id
자바스크립트 template string(``백틱)을 사용하거나 + 을 사용해서 활용해야한다.
href, class, id 등과 같은 attribute에서는 #{video.id}을 사용하면 인식이 안된다.

if구문은 자바스크립트와 비슷하게 사용된다. loggedIn이 ture면 Log Out, false면 Login

예 ) JavaSctipt와 동일한 방식... 위 코드와 완전 동일한것은 아님 작동 방식만 확인할 것!

if (fakeUser.loggedIn === false) {
 h1.innerText = Log Out;
}
else {
h1. innerText = Login;
}
 

Conditionals – Pug

Conditionals Pug’s first-class conditional syntax allows for optional parentheses. If you’re coming from Pug v1, you may now omit the leading -. Otherwise, it’s identical (just regular JavaScript): - var user = {description: 'foo bar baz'} - var auth

pugjs.org

PUG Iteration

elements 요소들의 list를 보여주는 방법. 댓글, 비디오 리스트 등 어떤 리스트를 보여주고 싶을 때 자주 사용하게 된다. list로 보여주고자 하는 array(배열&객체)이 있어야한다. 만약 array이 비어있다면 else 문을 추가해서 활용할 수 있다. (pug가 자동으로 배열 안에 값이 있는지 없는지 체크를 한다.) conditionals는 자바스크립트이지만 iteration, each / else 는 자바스크립트가 아니다! 

 

"each video in videos"

video는 이름을 원하는대로 사용할 수 있지만

videos 는 컨트롤러에서 선언한 이름으로만 사용해야한다.

보통 단수 in 복수 형태로 많이 사용한다.

 

#1 배열에 값이 있을 경우

 

#2 배열에 값이 없을 경우


 

#3 배열에 값을 반대순서로 표시


 

#4 객체 형태의 값을 표시

 

Mixins (smart partial)

mixin은 partial의 형태로 데이터를 받을 수 있다. partial로 만들어진 footer는 페이지가 바뀌어도 데이터가 바뀌지 않는다. 만약 반복하는 동일한 형태의 html 블록이지만 서로 다른 데이터를 가질 때 mixin을 활용하면 된다.

 

(예시: Youtube의 영상의 제목, 게시날짜, view 수 등의 정보는 동일한 형태로 추천 동영상, 인기 동영상 등에서 사용될 때 Mixin을 활용해 component형태로 만들어 사용한다.)

 

 

#mixins 예시

다양한 정보가 들어가 있는 여러 객체들
div ~ li 까지가 반복되는 형태의 html이다.
이부분이 mixins로 나눠 component처럼 활용될 예정

 

# mixin 파일
mixins 폴더를 생성하여 파일 생성 후 (views > mixins > video.pug) 
mixin 설정할 때는 mixin video(info) 선언해줘야 한다. (info : 전달 받을 내용) - mixin mixin_name (data)
구조 짜기 (div~li 까지 tag 잘라 붙여넣기)

# page 파일 (mixin 불러오는 파일)
include mixins/video :
mixins/video 을 불러와야 사용이 가능하다.
+mixin_name (item) :
videos의 item을 각각 video라는 mixin을 호출하여 정보를 info로 보낸다.
(* item은 videos array의 item)

 

 

 

반응형

'백엔드 > nodeJS' 카테고리의 다른 글

express (6) - GET / POST  (0) 2023.06.25
express (5) - absolute / relative URL  (0) 2023.06.25
Express View engine - PUG (2), mvp.css  (0) 2023.06.22
Express View engine - PUG (1)  (0) 2023.06.21
express 서버구축하기 (4) - Router Parameter  (0) 2023.06.19