[Vue.js] #3 컴포넌트
Vue.js 시작하기 - Age of Vue.js 강의 섹션 3. 컴포넌트
컴포넌트란
현대의 프레임워크들은 대부분 컴포넌트 기반으로 개발하고 있다.
컴포넌트란, 화면을 영역별로 나누어서 따로 관리할 수 있도록 한 것이다.
이렇게 함으로써 코드의 재사용성을 높일 수 있다.
컴포넌트 등록
예시 코드를 통해 학습해보자.
// /playground/component.html
<body>
<div id="app">
<!-- 3. 컴포넌트 태그 사용 -->
<app-header></app-header>
<app-content></app-content>
<app-footer></app-footer>
</div>
<div id="app2">
<app-header></app-header>
<app-footer></app-footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// 2-1. 전역 컴포넌트 등록
// Vue.component('컴포넌트 이름', {
// 컴포넌트 내용
// })
Vue.component('app-header', {
template: '<h1>Header</h1>'
});
Vue.component('app-content', {
template: '<div>content</div>'
});
// 1. Vue 생성자 만들기
new Vue({
el: '#app',
// 2-2. 지역 컴포넌트 등록
components: {
// '컴포넌트 이름': {컴포넌트 내용}
'app-footer': {
template: '<footer>footer</footer>'
}
}
});
new Vue({
el: '#app2'
// components: {
// 'app-footer': {
// template: '<footer>footer</footer>'
// }
// }
});
</script>
</body>
1 | Vue 생성자 를 통해 두 개의 div 태그(app1, app2)에 인스턴스를 붙였다. |
2-1 | 전역 컴포넌트 를 등록하였다. |
2-2 | 지역 컴포넌트 를 등록하였다. |
3 | 만들어진 컴포넌트 태그를 사용하였다. |
그 결과, App1
, App2
라는 각 태그를 나타내는 영역이 생겼으며,
Root
컴포넌트 아래에 하위 컴포넌트가 생겼다.
여기서 주목할점은 app-footer
이다.
App1
, App2
모두 동일하게 app-footer
컴포넌트를 사용했지만
App1
의 경우 자신의 생성자에 선언한 app-footer
컴포넌트를 사용하였고,
App2
의 경우 사용할 수 없기 때문에 출력되지 않았다.
아주 익숙한 전역 변수, 지역 변수와 같은 개념같다.
보통 전역 컴포넌트
는 잘 안쓰고, 지역 컴포넌트
를 사용하여 관리할 것이라고 한다.