# ๋ทฐ์˜ ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•

๋ทฐ์˜ ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์ด๋ž€ ๋ทฐ๋กœ ํ™”๋ฉด์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์€ ํฌ๊ฒŒ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ๊ณผ ๋””๋ ‰ํ‹ฐ๋ธŒ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

# ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ

๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์€ ๋ทฐ ์ธ์Šคํ„ด์Šค์—์„œ ์ •์˜ํ•œ ์†์„ฑ๋“ค์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๋ฐฉ์‹์€ ์ฝง์ˆ˜์—ผ ๊ด„ํ˜ธ(Mustache Tag)์ž…๋‹ˆ๋‹ค.

<div>{{ message }}</div>
new Vue({
  data: {
    message: 'Hello Vue.js'
  }
})

div ํƒœ๊ทธ์— ์ฝง์ˆ˜์—ผ ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด ๋ทฐ ์ธ์Šคํ„ด์Šค์˜ message ์†์„ฑ์„ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ™”๋ฉด์— Hello Vue.js๋ผ๋Š” ์ฝ”๋“œ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

# ๋””๋ ‰ํ‹ฐ๋ธŒ

๋””๋ ‰ํ‹ฐ๋ธŒ๋Š” ๋ทฐ๋กœ ํ™”๋ฉด์˜ ์š”์†Œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ™”๋ฉด ์กฐ์ž‘์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹๋“ค์„ ๋ชจ์•„ ๋””๋ ‰ํ‹ฐ๋ธŒ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์ด ํŠน์ • ์†์„ฑ ๊ฐ’์— ๋”ฐ๋ผ ํ™”๋ฉด์˜ ์˜์—ญ์„ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ํ‘œ์‹œํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<div>
  Hello <span v-if="show">Vue.js</span>
</div>
new Vue({
  data: {
    show: false
  }
})

์œ„์˜ ์ฝ”๋“œ๋Š” show๋ผ๋Š” ๋ฐ์ดํ„ฐ ์†์„ฑ ๊ฐ’์— ๋”ฐ๋ผ Vue.js ํ…์ŠคํŠธ๊ฐ€ ์ถœ๋ ฅ๋˜๊ฑฐ๋‚˜ ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

<ul>
  <li v-for="item in items">{{ item }}</li>
</ul>
new Vue({
  data: {
    items: ['shirts', 'jeans', 'hats']
  }
})

v-for ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์†์„ฑ์˜ ๊ฐœ์ˆ˜๋งŒํผ ํ™”๋ฉด์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์„ ํ‘œ์‹œํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ด์™ธ์—๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””๋ ‰ํ‹ฐ๋ธŒ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • v-bind
  • v-on
  • v-model