Bibi's DevLog ๐Ÿค“๐ŸŽ

[ํ…œํ”Œ๋ฆฟ ์—”์ง„] handlebars , handlebars๋กœ HTML ํŒŒ์ผ ๋‚˜๋ˆ„๊ธฐ (์ค‘๋ณต์ œ๊ฑฐ) ๋ณธ๋ฌธ

๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ

[ํ…œํ”Œ๋ฆฟ ์—”์ง„] handlebars , handlebars๋กœ HTML ํŒŒ์ผ ๋‚˜๋ˆ„๊ธฐ (์ค‘๋ณต์ œ๊ฑฐ)

๋น„๋น„ bibi 2021. 3. 11. 00:05

handlebars ํ…œํ”Œ๋ฆฟ ์—”์ง„

์ฐธ๊ณ  : ๋ธ”๋กœ๊ทธ. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์ง€๋งŒ ํฐ ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ์— ๋„์›€์ด ๋˜์—ˆ๋‹ค.

handlebars๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์˜ ํ•˜๋‚˜์ด๋‹ค.

  • mustache๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ๋ฌธ๋ฒ•์ด ๊ฑฐ์˜ ๊ฐ™๋‹ค.

  • mustache์™€์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ํ—ฌํผ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    • ํ—ฌํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ…œํ”Œ๋ฆฟ ์—”์ง„์— ๊ฐ„๋‹จํ•œ ๋กœ์ง์„ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    • handlebars๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ—ฌํผ๋„ ์žˆ๊ณ ,
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ—ฌํผ๋ฅผ ๋“ฑ๋กํ•ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

handlebars ์‚ฌ์šฉ์„ ์œ„ํ•œ ์„ค์ • (์Šคํ”„๋ง ๋ถ€ํŠธ, gradle)

  • build.gradle

    • dependencies์— compile 'pl.allegro.tech.boot:handlebars-spring-boot-starter:0.3.2' ์ถ”๊ฐ€
  • application.properties

    • handlebars.suffix=.html
      handlebars.cache=false

โ— ์ฃผ์˜

ํ…œํ”Œ๋ฆฟ์—๋Š” ๋กœ์ง์„ ๋„ฃ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. ๋กœ์ง์„ ๋„ฃ์œผ๋ฉด ํ…œํ”Œ๋ฆฟ์˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๊ณ , ํ…œํ”Œ๋ฆฟ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค. ๋”ฐ๋ผ์„œ ํ…œํ”Œ๋ฆฟ์— ๋กœ์ง์„ ๋„ฃ๋”๋ผ๋„ ๊ฐ„๋‹จํ•œ ๋ถ„๊ธฐ๋ฌธ, ๋ฐฐ์—ด, ๋ฐ˜๋ณต๋ฌธ ์ •๋„๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

[handlebars] HTML ํŒŒ์ผ ๋‚˜๋ˆ„๊ธฐ(์ค‘๋ณต์ œ๊ฑฐ)

handlebars ๋ฌธ์„œ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

HTML ํŒŒ์ผ์— ์ค‘๋ณต์ด ๋งŽ์„ ๋•Œ (header, footer ๋“ฑ) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒŒ์ผ์„ ๋‚˜๋ˆ„์–ด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

(handlebars๋ฅผ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ•)

๋‹ค๋ฅธ htmlํŒŒ์ผ๊ณผ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„ (header, footer)์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ๋‹ค.

๊ธฐ์กด ํŒŒ์ผ

<h1>header!</h1>
<p>put some messages</p>
<span>footer!</span>

๋จผ์ € ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ๋ณ„๋„์˜ htmlํŒŒ์ผ๋กœ ๋งŒ๋“ ๋‹ค.

header.html

<h1>header!</h1>

footer.html

<span>footer!</span>

๊ทธ๋ฆฌ๊ณ  {{> ํŒŒ์ผ๋ช…}}์œผ๋กœ ์ค‘๋ณต์ฝ”๋“œ๋ฅผ ์น˜ํ™˜ํ•ด์ฃผ๋ฉด ๋.

{{> header}}
<p>Home page</p>
{{> footer}}