컴포넌트에 대해서 검색해보니, 엄청나게 많은 이야기가 나오고 하드웨어 컴포넌트 -> 소프트웨어 컴포넌트 -> 객체지향 컴포넌트 (CBD) 등등 굉장히 많은 이야기가 나오는 것을 알 수 있었다.
but 우리는 vue에서 말하는 컴포넌트에 대해서 알아야 하니까! 기능과 디자인을 모아둔 조각 정도로 생각하자!
기본 HTML 엘리먼트를 확장하여 재사용 가능한 코드를 캡슐화 하는데 도움이 된다. 상위 수준에서 컴포넌트는 Vue의 컴파일러에 의해 동작이 추가된 사용자 지정 엘리먼트(요소)이다.
컴포넌트는 기능과 디자인을 모아둔 조각이라고 했다. 그러면 뭐가 좋을까 그 코드를 다른 곳에서도 사용할 수 있을것이다. 그리고 수정하고 싶은 부분이 있다면 컴포넌트만 수정하면 그 컴포넌트를 사용한 다른 곳도 모두 변경될 것이다. 유지보수성이 향상 될 것이다.
뷰 컴포넌트는 전역 컴포넌트와 지역 컴포넌트로 나뉜다.
전역변수와 지역변수의 차이 정도라고 생각하면 좋을거 같다.
Vue.component("컴포넌트 이름" ,"옵션")
<template>
<header>Memo App</header>
</template>
<style scoped>
header {
text-align: center;
padding: 25px;
border-bottom: 1px solid #eee;
background: #f7f7f7f7;
}
</style>
Footer.vue
<template>
<footer>©2022 Memo App. All rights reserved</footer>
</template>
<style scoped>
footer {
background: #f7f7f7;
border-top: 1px solid #eee;
padding: 25px;
}
</style>
2) header와 footer를 넣어둘 상위 컴포넌트 안에 넣어줍니다.
Ground.vue
<template>
<div class="ground">
<Header />
<Footer />
</div>
</template>
<script>
import Header from "./Header.vue";
import Footer from "./Footer.vue";
export default {
components: {
Header,
Footer,
},
};
</script>
<style></style>
Header.vue
와 Footer.vue
를 import
하여 Ground.vue
안 componets에 넣어주었습니다.
3) 이제 최상위 app.vue
에 Ground.vue
를 넣어 주겠습니다.
App.vue
<template>
<Ground />
</template>
<script>
import Ground from "./components/Ground.vue";
export default {
// name: "App",
components: {
Ground,
},
};
</script>
<style></style>
Ground.vue
내부 선언과 동일하게 처리해주면됩니다.
Header.vue,footer.vue
> Ground.vue
>App.js
로 타고타고 올라갈 수 있었습니다.
한 vue안에서만 선언되고 사용될 수 있습니다. 컴포넌트 안에서만 사용되는 거면 지역 컴포넌트로 선언해서 사용하는게 좋을거 같습니다.
별거 아닌 것이라고 생각했는데 정리하다보니 시간이 길어졌다.
1. Vue에는 지역 전역 컴포넌트가 있다.
2. 컴포넌트는 캡슐화와 재사용성, 유지보수가 좋다.
3. Html 을 캡슐화 한 것임을 기억하자