내가 보려고 만든 handlebar.js 정리🖐
회사에서 handlebar.js를 사용할 일이 생겼다.
헷갈리고 이해가 어려웠던 부분 위주로 정리해야겠다.
더 자세히 알고싶은 분은 👉여기를 참고하세욘
Handlebar.js 란?
handlebar.js(==핸들바)란 자바스크립트의 템플릿 엔진 중 하나로써, {{}} bracket을 이용해 데이터를 표현한다.
html 페이지에서도 사용이 가능하다. ㅎㅎ
그렇지만 나는 jsp 페이지에서 사용 중이다..:)
사용법🎶
사실 설명은 거두절미하고, 일단 뭐라도 써봐야 제일 알기가 쉽다.
- 기본적으로 “{ {data} }”형태를 사용한다.
- for와 같은 반복의 형태도 존재한다. 헬퍼라고 한다.
브라켓이 자꾸 이상하게 나와서 이번에는 코드를 전부 이미지로 첨부해야겠다. ㅠㅠ…
- 사용자는 헬퍼를 자유롭게 등록할 수도 있다.
Handlebars.registerHelper(‘add Helper’, function (help){ var add = {더해줄 로직} return add; });
사용예시
👇우선 이 밑의 코드를 기준으로 설명하려고 한다.👇
- html
- script
기본 형태
핸들바 템플릿은 script 태그 안에 type를 “text/x-handlebars-template”로 설정한다.
템플릿 안 구조에 {{}}로 감싸진 부분에 데이터가 바인딩된다.
{{#if items}}를 통해 items가 존재한다면 그 안의 코드가 실행된다. (if문 구조)
{{#items}} 와 {{/items}} 안에는 items라는 배열의 길이만큼 반복하게 된다. (반복문 구조)
또한 그 안에서 {{name}}, {{tel}}은 객체에서 name, tel의 속성값이 바인딩 된다.
결과
Partials
개인적으로 헷갈렸던 부분이다…😵💫
원하는 템플릿을 부분적으로 재사용이 가능하다. partials은 다른 템플릿에서 호출도 가능하다.
우선 사용을 하려면 등록을 해야한다.
const noDataPartial = $('#noData-template').html();
Handlebars.registerPartial('noData', noDataPartial);
‘noDataPartial’를 ‘noData’라는 이름으로 사용하는 거다.
부분호출은 {{>noData}} 식으로 호출한다.
partials에 원하는 내용을 추가(?)해주고 싶다면
{{#> noData contents=”데이터가 없습니다.”}} {{/noData}} 이 부분을 추가한다.
그리고 해당 템플릿 안에서 {{contents}} 이렇게 호출하면 된다.
그러면 {{contents}} 부분에 데이터가 없습니다. 라는 텍스트가 들어간 것을 확인 할 수 있다.
data 값을 비워두고 실행하면 아래와 같은 결과가 나온다. ✿˘◡˘✿
🌝느낀점🌝
사실 계속 사용하다보면 손에 익을 것 같긴 한데,,, 개인적으로는 불편했다..ㅠ_ㅜ..
원하는 데이터가 있으면 계속해서 바인딩을 시켜줘야 하고,
어느 부분에 바인딩을 할 건지 제대로 파악을 해야하기 때문에 오히려 헷갈릴 때도 있었다….
덜 헷갈리라고 만든 언어인데,,,;;; 이런 아이러니,,ㅎㅎ😭
내가 미숙한 탓도 있겠지만… 다른 방법을 놔두고 굳이굳이 먼저 핸들바를 사용하지는 않을 것 같다;;
그래도 이번 기회에 배운게 된 것에 감사하면서 좀 더 사용을 해봐야겠다. 그러면 더 감이 잡힐 수도,,,?!?!😎