handlebar

해피데빙·2022년 9월 26일
0

server.ts

  • app에 handlebars view engine을 등록한다
  • expressHandlebar.create를 통해 인스턴스를 만들어서 handlebar를 사용할 수 있다

Layouts

  • {{{body}}} placeholder가 있는 a Handlebars template
  • 주로 view가 렌더링될 html wrapper
  • view engine을 통해 layout directory로 경로를 연결
    cf. server.ts에서 app.set(views, ./views)를 app.set('views' path.join(__dirname, ./views_hbs")로 변경
    (view에는 vue가 들어가니까)

There are two ways to set a default layout

  • configuring the view engine's defaultLayout property (여기서는 이걸 사용)
  • setting Express locals app.locals.layout.

언제든지 defaultlayout 없이 부를 수 있음. 아래 예처럼

app.get('/', (req, res, next) => {
    res.render('home', {layout: false});
});

Helpers

  • Handlebar에 등록할 수 있고 template에서 호출할 수 있는 함수
  • template에서는 로직이 없기 때문에 그 역할을 해준다
  • 이걸 확장해서 각각 필요한 로직 사용
  • server.ts에서는 global helper 정의
  • 인스턴스 level helper는 각각 인스턴스에서 호출할 때 사용

Handlebars ships with some built-in helpers, such as: with, if, each, etc. Most applications will need to extend this set of helpers to include app-specific logic and transformations. Beyond defining global helpers on Handlebars, this view engine supports ExpressHandlebars instance-level helpers via the helpers configuration property, and render-level helpers via options.helpers when calling the render() and renderView() methods.

The following example shows helpers being specified at each level:

app.js:

Creates a super simple Express app which shows the basic way to register ExpressHandlebars instance-level helpers, and override one at the render-level.

profile
노션 : https://garrulous-gander-3f2.notion.site/c488d337791c4c4cb6d93cb9fcc26f17

0개의 댓글