# ๋ทฐ ์ปดํฌ๋„ŒํŠธ

์ปดํฌ๋„ŒํŠธ๋Š” ํ™”๋ฉด์˜ ์˜์—ญ์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ทฐ์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™”๋ฉด์„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์˜ฌ๋ผ๊ฐ€๊ณ  ๋น ๋ฅด๊ฒŒ ํ™”๋ฉด์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ๋œ ํ™”๋ฉด์˜ ์ปดํฌ๋„ŒํŠธ ๊ด€๊ณ„๋„

# ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ์ฝ”๋“œ ํ˜•์‹

์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Vue.component('์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„', {
  // ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ
});

# ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ ํ›„ ํ‘œ์‹œํ•˜๊ธฐ

์œ„ ์ฝ”๋“œ ํ˜•์‹์„ ์ฐธ๊ณ ํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์•ฑ ํ—ค๋” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Vue.component('app-header', {
  template: '<h1>Header Component</h1>'
});

์œ„์—์„œ ๋“ฑ๋กํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™”๋ฉด์—์„œ ํ‘œ์‹œํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ปดํฌ๋„ŒํŠธ ํƒœ๊ทธ(์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„)๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

<div id="app">
  <app-header></app-header>
</div>

div ํƒœ๊ทธ์— ๋ทฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์œ„ ํ…œํ”Œ๋ฆฟ ์ฝ”๋“œ๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

<div id="app">
  <h1>Header Component</h1>
</div>

# ์ปดํฌ๋„ŒํŠธ ๋“ฑ๋ก ๋ฐฉ๋ฒ• 2๊ฐ€์ง€

์ปดํฌ๋„ŒํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์—์„œ ์‚ดํŽด๋ณธ ๋ฐฉ์‹์€ ์ „์—ญ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

// ์ „์—ญ ์ปดํฌ๋„ŒํŠธ ๋“ฑ๋ก
Vue.component('app-header', {
  template: '<h1>Header Component</h1>'
});

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์ง€์—ญ ์ปดํฌ๋„ŒํŠธ๋กœ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์—์„œ ์‚ฌ์šฉํ•œ ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ์„ ๊ฐ€์ง€๊ณ  ๊ทธ๋Œ€๋กœ ์ง€์—ญ ์ปดํฌ๋„ŒํŠธ๋กœ ๋“ฑ๋กํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

var appHeader = {
  template: '<h1>Header Component</h1>'
}

new Vue({
  components: {
    'app-header': appHeader
  }
})