Template

๋ทฐ์˜ ํ…œํ”Œ๋ฆฟ์€ HTML, CSS ๋“ฑ์˜ ๋งˆํฌ์—… ์†์„ฑ๊ณผ ๋ทฐ ์ธ์Šคํ„ด์Šค์—์„œ ์ •์˜ํ•œ ๋ฐ์ดํ„ฐ ๋ฐ ๋กœ์ง์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ HTML๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์†์„ฑ์ด๋‹ค.

  • ES5์—์„œ ๋ทฐ ์ธ์Šคํ„ด์Šค์˜ template ์†์„ฑ ํ™œ์šฉ

  • ์‹ฑ๊ธ€ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ์ฒด๊ณ„์˜ <template> ์ฝ”๋“œ ํ™œ์šฉ

ํ…œํ”Œ๋ฆฟ ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ES5์—์„œ ๋ทฐ ์ธ์Šคํ„ด์Šค์˜ template ์†์„ฑ ํ™œ์šฉ

new Vue({
  template: '<p>Hello {{message}}</p>'
});

์ด์ „ ์˜ˆ์ œ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ์ด๋‹ค.

ํ…œํ”Œ๋ฆฟ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด๋ถ€์ ์œผ๋กœ template ์†์„ฑ์—์„œ ์ •์˜ํ•œ ๋งˆํฌ์—… + ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ƒ ๋” ๊ธฐ๋ฐ˜์˜ render() ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๋ณ€ํ™˜๋œ render() ํ•จ์ˆ˜๋Š” ์ตœ์ข…์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • template ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

<div id="app">
  <h3>{{message}}</h3>
</div>
<script>
  new Vue({
    el: '#app',
    data: {
      message: 'Hello'
    }
  });
</script>

template ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์šฐ์„  <h3>{{message}}</h3> ์ฝ”๋“œ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ณ , ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด message์˜ ๊ฐ’์„ data์†์„ฑ ์•ˆ์˜ ๊ฐ’์œผ๋กœ ์น˜ํ™˜ํ•œ๋‹ค.

  • template ์†์„ฑ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ

template์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ฌด ๋‚ด์šฉ์ด ์—†๋‹ค๊ฐ€ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด <h3>{{message}}</h3> ์ฝ”๋“œ๊ฐ€ ํ™”๋ฉด์— ์ถ”๊ฐ€๋˜์–ด ํ‘œ์‹œ๋œ๋‹ค.

2. ์‹ฑ๊ธ€ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ ์ฒด๊ณ„์˜ <template> ์ฝ”๋“œ ํ™œ์šฉ

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

๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์€ HTML ํ™”๋ฉด ์š”์†Œ๋ฅผ ๋ทฐ ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

{{}}

๋ทฐ ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ HTML ํƒœ๊ทธ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ…์ŠคํŠธ ์‚ฝ์ž… ๋ฐฉ์‹์ด๋‹ค.

data ์†์„ฑ์˜ message ๊ฐ’์„ {{message}}์— ์—ฐ๊ฒฐํ•˜์—ฌ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ์ด๋‹ค. ์—ฌ๊ธฐ์„œ data ์†์„ฑ์˜ message ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ทฐ ๋ฐ˜์‘์„ฑ์— ์˜ํ•ด ํ™”๋ฉด์ด ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋œ๋‹ค.

๋งŒ์•ฝ์— ๋ทฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๊ฐ’์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด v-once ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.

v-bind

v-bind๋Š” id, class, style ๋“ฑ์˜ HTML ์†์„ฑ ๊ฐ’์— ๋ทฐ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด v-bind ์†์„ฑ์œผ๋กœ ์ง€์ •ํ•  HTML ์†์„ฑ์ด๋‚˜ props ์†์„ฑ์•ž์— ์ ‘๋‘์‚ฌ๋กœ ๋ถ™์—ฌ์ฃผ๋ฉด๋œ๋‹ค.

์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ๊ฐ <p> ์— ์—ฐ๊ฒฐ๋˜์–ด ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚œ๋‹ค.

์—ฌ๊ธฐ์„œ v-bind: ๋ฌธ๋ฒ•์„ : ๋กœ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด v-bind:id๋Š” :id์™€ ๊ฐ™์€ ๋™์ž‘์„ ํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹

๋ทฐ์˜ ํ…œํ”Œ๋ฆฟ์—์„œ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค. {{}} ์•ˆ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์ด ์žˆ๋‹ค.

  1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์„ ์–ธ๋ฌธ๊ณผ ๋ถ„๊ธฐ ๊ตฌ๋ฌธ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

  2. ๋ณต์žกํ•œ ์—ฐ์‚ฐ์€ ์ธ์Šคํ„ด์Šค ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ™”๋ฉด์—๋Š” ๊ฐ„๋‹จํ•œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋งŒ ํ‘œ์‹œํ•ด์•ผํ•œ๋‹ค.

computed

cpmputed ์†์„ฑ์€ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ๋“ค์„ ์ •์˜ํ•˜๋Š” ์˜์—ญ์ด๋‹ค.

๋ณต์žกํ•œ ๊ณ„์‚ฐ์€ computed (๋ฐ์ดํ„ฐ ์†์„ฑ์„ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ์†์„ฑ)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. HTML์— ์ตœ์ข…์ ์œผ๋กœ ํ‘œํ˜„๋  ๊ฐ’๋งŒ ๋‚˜ํƒ€๋‚ด๊ณ , ๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ณธ์—ฐ์‚ฐ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‹จ์—์„œ ํ•จ์œผ๋กœ์จ ํ™”๋ฉด๋‹จ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ ๋ฐ˜๋ณต์ ์ธ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด์„œ๋Š” ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•ด ๋†“๊ณ , ํ•„์š”ํ•  ๋•Œ ๋ฐ”๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” caching ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, computed ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • data ์†์„ฑ ๊ฐ’์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์—ฐ์‚ฐํ•œ๋‹ค.

  • caching : ๋™์ผํ•œ ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณตํ•ด์„œ ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์ž‘ ( ์ข…์† ๋Œ€์ƒ )

computed vs methods

methods ์†์„ฑ์€ ํ˜ธ์ถœํ•  ๋•Œ๋งŒ ํ•ด๋‹น ๋กœ์ง์ด ์ˆ˜ํ–‰๋˜๊ณ , computed ์†์„ฑ์€ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ž๋™์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค. ์ฆ‰, ์ˆ˜๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š”์ง€, ๋Šฅ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š”์ง€์˜ ์ฐจ์ด์ด๋‹ค.

methods์†์„ฑ์€ ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ์บ์‹ฑ์„ ํ•˜์ง€ ์•Š์ง€๋งŒ, computed ์†์„ฑ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€, ํ•„์š”ํ• ๋•Œ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค. ๋”ฐ๋ผ์„œ, ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•ด์„œ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค๋ฉด, computed ์†์„ฑ์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ๋ฉด์—์„œ ๋” ํšจ์œจ์ ์ด๋‹ค.

computed ์†์„ฑ์€ ์ข…์† ๋Œ€์ƒ์„ ๋”ฐ๋ผ ์ €์žฅ(์บ์‹ฑ)๋˜๊ธฐ ๋•Œ๋ฌธ์— Date.now() ์™€ ๊ฐ™์ด ์•„๋ฌด๊ณณ์—๋„ ์˜์กดํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์€ ์ ˆ๋Œ€๋กœ update๋˜์ง€ ์•Š๋Š”๋‹ค.

computed vs watch

watch ์†์„ฑ์€ ๋ฐ์ดํ„ฐ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•ด ์ž๋™์œผ๋กœ ํŠน์ • ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. computed ์†์„ฑ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ computed ์†์„ฑ์€ ๋‚ด์žฅ API๋ฅผ ํ™œ์šฉํ•œ ๊ฐ„๋‹จํ•œ ์—ฐ์‚ฐ์— ์ ํ•ฉํ•œ ๋ฐ˜๋ฉด, watch ์†์„ฑ์€ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ๊ณผ ๊ฐ™์ด ์‹œ๊ฐ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์ด ์†Œ๋ชจ๋˜๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•˜๋‹ค.

Directive

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

๋””๋ ‰ํ‹ฐ๋ธŒ ์ข…๋ฅ˜

์—ญํ• 

v-if

์ง€์ •ํ•œ ๋ทฐ ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ์ฐธ, ๊ฑฐ์ง“ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํ•ด๋‹น HTML ํƒœ๊ทธ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. (ํ•ด๋‹น ํƒœ๊ทธ ์™„์ „ํžˆ ์‚ญ์ œ)

v-for

์ง€์ •ํ•œ ๋ทฐ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋งŒํผ ํ•ด๋‹น HTML ํƒœ๊ทธ๋ฅผ ๋ฐ˜๋ณต ์ถœ๋ ฅํ•œ๋‹ค.

v-show

v-if์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ์ง„์œ„ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํ•ด๋‹น HTML ํƒœ๊ทธ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. (display:none css ๋ฅผ ์ฃผ์–ด ์‹ค์ œ ํƒœ๊ทธ๋Š” ๋‚จ์•„ ์žˆ๊ณ , ํ™”๋ฉด์ƒ์œผ๋กœ๋งŒ ๋ณด์ด์ง€ ์•Š์Œ)

v-bind

HTML ํƒœ๊ทธ์˜ ๊ธฐ๋ณธ ์†์„ฑ๊ณผ ๋ทฐ ๋ฐ์ดํ„ฐ ์†์„ฑ ์—ฐ๊ฒฐ

v-on(@)

ํ™”๋ฉด ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ v-on:์„ ๊ฐ„์†Œํ™”ํ•œ ๋ฌธ๋ฒ•์€ @ ์ด๋‹ค.

v-model

form์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์œผ๋กœ, ํผ์— ์ž…๋ ฅํ•œ ๊ฐ’์„ ๋ทฐ ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ์ฆ‰์‹œ ๋™๊ธฐํ™”ํ•œ๋‹ค. ํ™”๋ฉด์— ์ž…๋ ฅ๋œ ๊ฐ’์„ ์ €์žฅํ•ด ์„œ๋ฒ„์— ๋ณด๋‚ด๊ฑฐ๋‚˜ watch ์™€ ๊ฐ™์€ ์†์„ฑ์„ ์ด์šฉํ•ด ์ถ”๊ฐ€ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. <input>, <select>, <textarea> ํƒœ๊ทธ์—๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

๋ทฐ ํ™”๋ฉด์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด v-on ๋””๋ ‰ํ‹ฐ๋ธŒ์™€ methods ์†์„ฑ์„ ํ™œ์šฉํ•œ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ๋Š” v-on:click ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํด๋ฆญ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ clickBtn ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์ž๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ event ์ธ์ž๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด ๋” ์ด๋ฒคํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

function(event){} ์™€ ๊ฐ™์ด event ์ธ์ž๋ฅผ ์ •์˜ํ•˜๋ฉด ํ•ด๋‹น ๋” ์š”์†Œ์˜ ์ด๋ฒคํŠธ ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

Last updated

Was this helpful?