반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

trycode

handlebars 본문

javascript

handlebars

hello-world 2021. 1. 19. 23:14
728x90
반응형

handlebars 기본 

 

1. express-handlebars 설치( 터미털에서 )

npm install express-handlebars --save

 

 

2.  handlebars 등록

var exphbs = require('express-handlebars');

//여기서 매개변수 app은 var app=express(); 로 익스프레스앱을 뜻함. 

module.exports=function(app) {
    
    //handlebars template
    app.engine('handlebars', exphbs.create({
        defaultLayout:'main', // 디폴트레이아웃사용.
        layoutDir:app.get('views')+'/layouts',  //레이아웃 파일( handlebars ) 경로
        partialsDir:[app.get('views')+'/partials'], //파셜 파일 경로
        helpers:{  //전역 헬퍼등록
            timeago:function(timestamp) {
                return moment(timestamp).startOf('minute').fromNow();
            }
        }
    }).engine);
    app.set('view engine', 'handlebars'); // handlebars 등록
    return app;
};

 

 

 

아래 객체가 핸들바 템플릿으로 넘겨졌다고 가정.

var model={
    name:'World'
}

 

템플릿은 다음 마크업을 포함한다.

<div>Hello {{ name }} !</div>

 

 

이 파일은 브라우저에서 확인해 보면 Hello World 라고 찍히게 된다.

 

{{ }}    -->   데이터 바인딩 되는 부분

{{{ }}}    -->  핸들바의 예약어인데 레이아웃과 관련해서 사용. 핸들바의 콘텐츠가 삽입된다. 

{{ >  }}   -->  핸들바 파셜뷰 그리는데 사용.  즉 작은 뷰 삽입 / 재사용 콤포넌트 삽입용도 정도로 이해~                 

 

 

 

조건문( 참일 경우 )

var model={
    name:'World',
    description:'역시 프로그래밍은 헬로월드부터~'
}
<div>
    Hello {{name}}!<br />
    {{#if description}}
        <p>{{descripion}}</p>
    {{/if}}
</div>

 

 

조건문( 거짓일 경우 )

var model={
    name:'World',
    description:'역시 프로그래밍은 헬로월드부터~'
}
<div>
    Hello {{name}}!<br />
    {{#unless description}}
        <p>{{descripion}}</p>
    {{/if}}
</div>

 

루프 템플릿

- 핸들바의 루프템플릿 내부에서는 실행 컨텍스트가 바뀐다.

이는 각 each 내부에서 데이터에 접근할 때 컬렉션의 각 항목부터 경로가 시작된다는 뜻.

{{#each dataName}}
    <div class="col-md-4 text-center" style="padding-bottom:1em;">
        <a href="/">
            <img src="......" alt="{{title}}" class="img-thumbnail"/>
        </a>
    </div>
{{/each}}

 

반응형

'javascript' 카테고리의 다른 글

width/height 구하기  (0) 2021.01.20
NVM ( node version manager )  (0) 2021.01.19
spread operator ( 스프레드 연산자 )  (0) 2021.01.19
Template literal(템플릿 리터럴)  (0) 2021.01.19
import 구문 - javascript  (0) 2021.01.19
Comments