[Handlebars] Helper & Custom Helper 사용하기

2022. 2. 8. 18:48 Template Engine/Handlebars, Mustache

※ 자세한 사항은 핸들바스 홈페이지 참조

https://handlebarsjs.com/

Helper 란?

 

아래 예는 스크립트에서 Helper를 등록해서 사용하는 예제이다
fullName이라는 Helper는 person을 파라미터로 받아서 person.firstName + person.lastName을 해서 fullName을 리턴하는 Helper이다.
Helper들은 아래와 같이 핸들바스에서 뷰를 만들기 위해 특별하게 동작하는 메소드이다.

자주 사용되는 Helper 들은 이미 JAR파일 안에 등록되어 있다. 
근데 아래와 같이 위에서 본 스크립트가 아닌 자바파일로 되어있다.
즉, 자바파일로도 Helper를 만들고 Handlebars에서 자바 Helper를 불러서 사용할 수 있다

 
Custom Java Helper 만들어서 사용하기

예제를 위해 "\r\n"이라는 한줄을 내려가게하는 문자가 들어오면 HTML의 <br/>로 바꿔주는 Helper를 만들어보자. 이름은 NewLineHelper라고 하겠다. 

1. Helper interface 구현하기

모든 핸들바스 핼퍼들은 아래의 Helper 인터페이스를 구현해서 만든다
핼퍼들은 registerHelper() 메소드를 사용해서 등록된다.
핼퍼가 Handlebars에서 사용되면 apply메소드가 호출된다

아래와 같이 NewLineHelper를 구현한다.
※ 주의할 점은, Handlebars.SafeString()으로 한번 꼭 감싸줘야한다.
그래야 <br/>이 "<br/>"이 아닌 HTML로 인식된다

2. Custom Helper Register

- HandlebarsViewResolver를 등록할때 같이 등록한다
- "newLine"이름으로 NewLineHelper를 등록했다. 핸들바스에서는 {{newLine ...}}로 사용할 수 있다.

3. 사용하기

- {{newLine testText1}}의 경우 newLine Helper가 testText1에 적용되서 <br/>이 적용된다
- {{testText2}}는 단순히 텍스트만 출력된다.


Custom Helper 를 만들때 Helper 인터페이스를 사용했다. 
Helper 인터페이스에서 제공하는 Options를 사용했는데, 이에대해선 나중에 더 공부해야될 것 같다