๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Personal_Study/Vue

Vue Component

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 11. 11.

Vue Component

Vue Component ๊ตฌ์กฐ

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png" />
    <HelloWorld msg="Welcome to Your Vue.js App" />
  </div>
</template>

<script>
import HelloWorld from "./components/HelloWorld.vue";

export default {
  name: "App",
  components: {
    HelloWorld,
  },
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

โœ” ํ…œํ”Œ๋ฆฟ(HTML)

  • HTML์˜ body ๋ถ€๋ถ„
  • ๋ˆˆ์œผ๋กœ ๋ณด์—ฌ์ง€๋Š” ์š”์†Œ ์ž‘์„ฑ
  • ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ html์š”์†Œ ์ฒ˜๋Ÿผ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

โœ” ์Šคํฌ๋ฆฝํŠธ(JavaScript)

  • JavaScript ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ๊ณณ
  • ์ปดํฌ๋„ŒํŠธ ์ •๋ณด, ๋ฐ์ดํ„ฐ, ๋ฉ”์„œ๋“œ ๋“ฑ vue ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์ด ์ž‘์„ฑ๋œ๋‹ค.

โœ” ์Šคํƒ€์ผ(CSS)

  • CSS๊ฐ€ ์ž‘์„ฑ๋˜๋ฉฐ ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ์„ ๋‹ด๋‹น

๊ตฌ์กฐ ์ •๋ฆฌ

โœ” ์ปดํฌ๋„ŒํŠธ๋“ค์ด tree ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ์–ด ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ ๋‹ค.
โœ” root์— ํ•ด๋‹นํ•˜๋Š” ์ตœ์ƒ๋‹จ์˜ component๊ฐ€ App.vue
โœ” ์ด App.vue๋ฅผ index.html๊ณผ ์—ฐ๊ฒฐ
โœ” ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋งŒ๋“ค rendering -> SPA

Vue component ์‹ค์Šต

MyComponentj.vue

// MyComponent.vue

<template>
  <div>
    <h1>This is my Component</h1>
  </div>
</template>

<script>
export default {
  name: "MyComponet",
};
</script>

<style></style>
  1. src/components/ ์•ˆ์— ์ƒ์„ฑ
  2. script์— ์ด๋ฆ„ ๋“ฑ๋ก
  3. template์— ์š”์†Œ ์ถ”๊ฐ€

component ๋“ฑ๋ก 3๋‹จ๊ณ„

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png" />
    <!-- 3. ๋ณด์—ฌ์ฃผ๊ธฐ -->
    <MyComponent />
    <HelloWorld msg="Welcome to Your Vue.js App" />
  </div>
</template>

<script>
import HelloWorld from "./components/HelloWorld.vue";
// 1. ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
// import MyComponent from './components/MyComponent.vue'
import MyComponent from "@/components/MyComponent";

export default {
  name: "App",
  components: {
    HelloWorld,
    // 2. ๋“ฑ๋กํ•˜๊ธฐ
    MyComponent,
  },
};
</script>
  1. ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    โœ” import {instance name} from {์œ„์น˜}
    โœ” @๋Š” src์˜ shortcut
    โœ” .vue๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ
  2. ๋“ฑ๋กํ•˜๊ธฐ
  3. ๋ณด์—ฌ์ฃผ๊ธฐ

์ž์‹ ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

  1. src/components/ ์•ˆ์— MyComponentItem.vue ์ƒ์„ฑ
<!-- MyComponentItem.vue -->

<template>
  <div>
    <h3>Child Component of MyComponent</h3>
  </div>
</template>

<script>
export default {
  name: "MyComponentItem",
};
</script>

<style></style>
  1. MyComponent์— MyChild ๋“ฑ๋ก
// MyComponent.vue

<template>
  <div class="border">
    <h1>This is my Component</h1>
    <!-- 3. ๋ณด์—ฌ์ฃผ๊ธฐ -->
    <MyComponentItem />
  </div>
</template>

<script>
// 1. ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
import MyComponentItem from "@/components/MyComponentItem";

export default {
  name: "MyComponet",
  // 2. ๋“ฑ๋กํ•˜๊ธฐ
  components: {
    MyComponentItem,
  },
};
</script>

<style>
.border {
  border: solid 1px black;
}
</style>

'โญ Personal_Study > Vue' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Emit Event  (0) 2022.11.13
Pass Props  (0) 2022.11.12
SFC (Single File Component)  (0) 2022.11.11
Vue_CLI  (0) 2022.11.09
Vue: advanced attributes  (0) 2022.11.07

๋Œ“๊ธ€