1. Handlebars

  • Handlebars

    • JS์˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ค‘ ํ•˜๋‚˜.

    • ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋ผ ํ•˜๋ฉด, ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง๊ณผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต ๋ถ„๋ฆฌ ์ˆ˜๋‹จ.

    • mustache ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•œ ํ…œํ”Œ๋ฆฟ ์ธ์ž.

    • mustache(์ฝง์ˆ˜์—ผ๋ชจ์–‘์˜ ) Bracket์„ ์ด์šฉํ•˜์—ฌ data ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ.

    • htmlํŽ˜์ด์ง€์—์„œ HTML + Bracket์˜ ๊ตฌ์„ฑ์œผ๋กœ ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ˜‘์—…ํ•  ๋•Œ, ๋””์ž์ด๋„ˆ์—๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋กœ ํ˜‘์—…์— ๋„์›€์ด ๋œ๋‹ค.

    • ํ™•์žฅ์ž(.hbs)๋ฅผ ๊ฐ€์ง€๊ณ  ์ปดํŒŒ์ผ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

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

    • ํ…œํ”Œ๋ฆฟ ์–‘์‹๊ณผ ํŠน์ • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๋”ฐ๋ฅธ ์ž…๋ ฅ์ž๋ฃŒ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฌธ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

    • ๊ทธ ์ค‘, ์›น ํƒฌํ”Œ๋ฆฟ ์—”์ง„์ด๋ž€ ์›น๋ฌธ์„œ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์—”์ง„์„ ๋งํ•œ๋‹ค.

      • Web Template / Database(Model) => Template Engine(Compile) => Web document (View)

      • view Code(html) ๊ณผ data logic code(db connection)์„ ๋ถ„๋ฆฌํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ

    • ํ…์ŠคํŠธ ํ…œํ”Œ๋ฆฟ ์—”์ง„

      • ํ…œํ”Œ๋ฆฟ ์–‘์‹์— ์ ์ ˆํ•œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๊ฒฐ๊ณผ๋ฌธ์„œ ์ถœ๋ ฅ

        • Thymeleaf, JSP,...

      • ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ…œํ”Œ๋ฆฟ ์—”์ง„(Server Side Template Engine)

        • ์—ญํ• :์„œ๋ฒ„์—์„œ DB๋‚˜ API์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜๋œ Template์— ๋„ฃ์–ด html์„ ๊ทธ๋ ค, ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ.

        • HTML์—์„œ ๊ณ ์ •์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์„ template๋กœ ๋งŒ๋“ค๊ณ  ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ถ€๋ถ„๋งŒ ํ…œํ”Œ๋ฆฟ์— ์†Œ์Šค์ฝ”๋“œ ๋„ฃ๋Š”๋ฐฉ์‹

        • ์˜ˆ(js): Handlebars, EJS, Jade,...

      • ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ํ…œํ”Œ๋ฆฟ ์—”์ง„(Client Side Template Engine)

        • ์—ญํ• : ๋™์ ์œผ๋กœ DOM์„ ๊ทธ๋ฆฌ๊ฒŒ ํ•˜๋Š” ์—ญํ• 

        • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ, DOM ๊ฐ์ฒด์— ๋™์ ์œผ๋กœ ๊ทธ๋ ค์ฃผ๋Š” ํ”„๋กœ์„ธ์Šค ๋‹ด๋‹น

        • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณตํ†ต์ ์ธ ํ”„๋ ˆ์ž„์„ ๋ฏธ๋ฆฌ ์ œ์ž‘ํ•œ ๊ฒƒ์„ template์ด๋ผ๊ณ  ํ•œ๋‹ค.

        • scriptํƒ€์ž…์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉ

        • ํ•„์š”์„ฑ

          • HTML DOM์ด ๋‹ค ๊ทธ๋ ค์ง„ ๋’ค, ์„œ๋ฒ„ ํ†ต์‹  ์—†์ด ํ™”๋ฉด๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ.

          • ๋‹จ์ผ ํ™”๋ฉด์—์„œ ํŠน์ • ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ํ™”๋ฉด์ด ๊ณ„์† ๋ณ€๊ฒฝ๋˜์–ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ.

        • ์˜ˆ: Handlebars, Mustache, ...

      • ๊ณผ์ •

        • ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ณตํ†ต์ ์ธ ํ”„๋ ˆ์ž„(template) ๊ฐœ๋ฐœ

        • ์„œ๋ฒ„์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์š”์ฒญ

        • ๋ฐ์ดํ„ฐ๋ฅผ template์˜ ์ ์ ˆํ•œ ์œ„์น˜์— ๋Œ€์ฒดํ•œ ํ›„ DOM๊ฐ์ฒด์— ๋™์ ์œผ๋กœ ์ „๋‹ฌ

      • ํ•„์š”์„ฑ

        • HTML์— ๋น„ํ•ด ๊ฐ„๋‹จํ•œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋Ÿ‰์„ ์ค„์ž„

        • ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง

        • ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด

  • ์‹ค์Šต

    • handlebars ๋ชจ๋“ˆ์„ค์น˜

      npm i handlebars -D
    • .hbs ํ™•์žฅ์ž๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก handlebars-loader์„ค์น˜ ํ›„, loader์— ์„ค์ •

      npm i handlebars-loader -D
      • ์˜ต์…˜์—†์ด ์‚ฌ์šฉ์‹œ

        {
          test: /\.hbs$/,
          use:['handlebars-loader']
        }
    • plugin

      • HtmlWebpackPlugin์œผ๋กœ Data๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋  ๋•Œ plugin์„ค์ •

        plugins:[
          new HtmlWebpackPlugin({
              title:'Webpack',
              template:'./template.hbs'
          })
        ],
      • ์œ„์™€๊ฐ™์ด ์„ค์ •์‹œ, ๋ฐ์ดํ„ฐ๊ฐ€ hbs์ชฝ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด์„œ title๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

      • template.hbs์— ์•„๋ž˜ ์ž‘์„ฑ

        {{htmlWebpackPlugin.optioins.title}}
    • build(bundle) ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ธฐ

      npm run build
    • meta ํƒœ๊ทธ๋„ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ์šฉํ•ด๋ณด๊ธฐ.

      • webpack.config.js ๋‚ด๋ถ€ metaํ‚ค ํ™•์ธ

      • template.hbs ์— ์ž‘์„ฑ๋œ metaํƒœ๊ทธ๋ฅผ ์ง€์šฐ๊ณ  build ํ•ด๋ณด๊ธฐ

Last updated